何が起きたか
Datadog Security Labsは、OpenCode AIコーディングエージェントのブラウザインターフェースに重大なリモートコード実行を発見した:/global/upgrade APIが、rawリクエストハンドラーでのコンテンツタイプ混乱と、攻撃者が制御するアップグレードターゲットの安全でない処理を組み合わせることで、悪意のあるWebサイトが経路上のnpm tarballを悪意のあるpackage.jsonライフサイクルスクリプトを持つものに置き換えることができる。この悪用には、影響を受けるバージョンを実行しているユーザーが、ローカルのエージェントサーバーがアクティブな状態で細工されたページを訪問するだけでよい。
なぜ重要か
AIコーディングエージェントは開発者のマシン上で最も信頼度の高いサーフェスである — ユーザーの認情報、リポジトリアクセス、シェル権限を保持している。無害なWebページ訪問を介した侵害は、日常的なブラウジング操作をエージェントホストでの完全なコード実行に変換し、AI支援コードを書くすべての人にとって、コードサプライチェーン汚染と認情報窃取を直接可能にする。
攻撃経路
OpenCodeのWebインターフェースが実行中(opencode serve/web on 127.0.0.1:4096)に細工されたWebページを訪問すると、コンテンツタイプ混乱パスがトリガーされる:/global/upgradeエンドポイントが攻撃者が制御するアップグレードターゲットをパッケージマネージャーのインストールコマンドに渡し、npmパッケージ仕様がリモートtarball URLを受け入れるため、隠しフォーム/テキストプレーンリクエストがインストールを悪意のあるパッケージに誘導でき、そのpreinstallライフサイクルスクリプトがOpenCodeプロセスの権限で実行される。認証不要のlocalhostサービスは、トップレベルHTMLフォームナビゲーション(CORSをバイパス)を介して敵対的なページから到達可能である。CVEは申請されていない。GitHub advisoryを追跡すること。
影響を受けるシステム
OpenCode 1.14.30〜1.18.21(npm/pnpm/Bun経由でインストール)、1.18.22で修正、GitHub advisory GHSA-632h-h47v-g4x4
緩和策
OpenCode 1.18.22+にアップグレード(アップグレードターゲットをセマンティックバージョンとして検証、text/plainボディを拒否)。多層防御:OPENCODE_SERVER_PASSWORDを設定し、サービスをlocalhost以外に公開しない。突然のパッケージマネージャーアクティビティを侵害の証拠として扱う