OpenCode Web は良いツールで、既定値が危険

英語からの翻訳です。原文は English.


より良い選択肢か

しばらく OpenCode を使っていますが、多くの点で Claude Code より自分に合っています。Ollama や Anthropic など複数のプロバイダと話せて、オープンソースで、作業の途中でモデルを切り替えるのも速いです。

さらに opencode web という Web モードがあり、CLI をブラウザアプリに変えます。便利な反面、注意しないとこれがツールの中で一番危ない部分になります。

リスク

opencode web を実行するとサーバーが立ちます。ネットワーク上のノート PC から届くように 0.0.0.0 に束縛すると、そのマシンのインターフェースにリモートコード実行の入口を置いたことになります。

Web UI はコマンドを実行し、ファイルを編集し、シェルに届きます。そのために存在しています。認証がなければ、ポートを見つけた人がそれを全部手に入れます。

露出状況

これが現実に起きているのか、FOFA と title="OpenCode" というクエリで確認しました。

FOFA.info で OpenCode のインスタンスを検索したクエリ

すぐに 32 台の公開ホストが見つかりました。

FOFA の検索結果。公開された OpenCode Web インスタンスが 32 台

32 という数字は検索結果としては少なく見えますが、少なくありません。開かれたインターネットから届く開発環境が 32 個あるということです。OpenCode は簡単にカスタマイズできるので、タイトルを変えたビルドはここには一切出てきません。

守り方

OpenCode には Web UI を閉じる手段が用意されています。有効にする必要があります。

1. パスワードを設定する

サーバーを起動する前にパスワードを設定して、それなしでは UI に届かないようにします。

Web サーバーを起動する前にこのコマンドを実行します。

opencode --set-password <your-strong-password>

代わりに環境変数 OPENCODE_SERVER_PASSWORD を設定してもかまいません。

2. インターネットに出さない

VPN やトンネルが手前にない限り、ポートをインターネットへ転送しないでください。127.0.0.1 か、自分が管理するローカルネットワークに留めます。

まとめ

OpenCode はおすすめです。ファイルを書き換えてシェルを実行できるツールは、それ相応に扱う必要があります。

起動する前にパスワードを設定する。教訓はそれだけです。