OpenCode AI Coding Agent Flaw Lets Malicious Websites Execute Code on Developer Machines
2026/09/29 CyberSecurityNews — 悪意のある Web サイトを利用する攻撃者は、オープンソースの AI コーディング・エージェント OpenCode の脆弱性を悪用し、開発者のコンピュータ上でコマンドを実行する可能性がある。GHSA-632h-h47v-g4x4 として追跡されているこのリモート・コード実行の脆弱性は、OpenCode の /global/upgrade API における Content-Type の混同に起因し、攻撃者が制御するアップグレード先の指定が可能になる。この問題と、安全でない方法でリクエストを処理する問題が組み合わされることでリスクが拡大する。すでに Anomaly は、OpenCode 1.18.22 をリリースし、この問題に対処している。

2025年6月にリリースされた OpenCode は、言語モデルを開発者のワークフローに統合する AI コーディング・エージェントである。同社の Web サイトによると、GitHub で 208,000 件を超える Star を獲得し、月間 1,600 万人の開発者が利用している。このため、本脆弱性はソフトウェア・サプライチェーンのセキュリティにも関わる問題である。
影響を受けるのは、opencode serve または opencode web で起動する OpenCode のブラウザ・インターフェイスであり、デフォルトでは認証なしで 127.0.0.1:4096 にバインドされ、リクエストを受け付ける。

Datadog Security Labs が公開した調査によると、npm/pnpm/Bun でインストールした OpenCode 1.14.30~1.18.21 が影響を受ける。
/global/upgrade エンドポイントは、opencode-ai@VERSION をインストールするためのパッケージ・マネージャのコマンドに、アップグレード先を指定する値を渡している。しかし、npm のパッケージ指定では遠隔の tarball の URL も受け入れるため、攻撃者は悪意のある package.json と preinstall ライフサイクル・スクリプトを含むアーカイブを遠隔に配置し、これをアップグレード先として指定することで、OpenCode プロセスの権限で任意のコマンドを実行できる可能性がある。
サービス自体は localhost にバインドされているが、研究者は、悪意のある Web ページから被害者のブラウザを介してローカル API にアクセスできることを実証した。通常の JavaScript fetch() リクエストでは CORS のプリフライトが発生するためアクセスはブロックされるが、HTML フォームをトップレベル・ナビゲーションとして送信する攻撃手法により、CORS やローカル・ネットワーク・アクセス (LNA) による保護が回避される。
この攻撃が成立する根本的な原因は、OpenCode のリクエスト・ハンドラが Content-Type を確認せず、すべてのリクエスト・ボディを JSON として解析しようとする点にある。攻撃者は enctype=”text/plain” を使用し、非表示フィールドの名前と値を細工することで、ブラウザに有効な JSON を生成させ、リクエスト・ボディでアップグレード先として攻撃者が制御するパッケージの tarball を指定できるため、インストール時にライフサイクル・スクリプトが実行される。
攻撃に必要なのは、影響を受ける環境で OpenCode サーバが稼働している間に、ユーザーが細工された Web ページにアクセスすることだけである。影響を受けるのは、npm/pnpm/Bun を介してインストールした OpenCode 1.14.30~1.18.21 を実行し、serve または web を起動している環境である。パスワード保護が設定されていない場合や、有効な Basic 認証情報がブラウザにキャッシュされている場合も、攻撃の対象になり得る。
Datadog が引用した npm の公開データによると、脆弱な 82 件のリリースは、2026年9月17日~9月23日の間に 647,000 回を超えてダウンロードされ、同期間における OpenCode の全ダウンロード数の 38.9% を占めている。ただし、この数字は一意のインストール数や、Web サービスを有効にしていたユーザー数を示すものではない。
Anomaly が提供したパッチは、アップグレード先がセマンティック・バージョン形式であることを検証し、任意のパッケージ URL を指定できないようにするものだ。さらに、リクエスト・ハンドラを Content-Type に対応したものに変更し、text/plain による送信を拒否する多層防御が導入された。修正版の OpenCode 1.18.22 は、実証されたリクエストに対して HTTP 415「サポートされていないメディア形式」を返す。
この処理経路は 4月29日に導入され、その翌日の 4月30日にバージョン 1.14.30 がリリースされた。Datadog は 8月11日に問題を発見し、非公開で脆弱性を報告したが、CVE は申請されていないため、利用者やセキュリティ担当者は GitHub Advisory の識別子を追跡する必要がある。
開発者は、OpenCode を 1.18.22 以降に速やかにアップグレードし、稼働中のプロセスを再起動するとともに、インストール済みのバージョンとインストール方法を確認する必要がある。また、Web インターフェイスを使用する場合は、OPENCODE_SERVER_PASSWORD を設定し、localhost の外部にサービスを公開しないようにするほか、予期しないパッケージ・マネージャの動作やライフサイクル・スクリプトの実行、外部からのダウンロードなどを侵害の可能性を示す兆候として扱う必要がある。
ただし、パスワード保護は攻撃が成立する可能性を低減するものであり、パッチ適用の代替にはならない。ブラウザにキャッシュされた認証情報が、攻撃者の細工したリクエストに付加される可能性があるためである。
オープンソースの AI 開発ツール OpenCode にリモートで任意の処理を実行される深刻な不備が見つかりました。ローカル環境で Web 用サービスを起動している際、外部の悪質なサイトを閲覧するだけで被害に遭う危険性があります。リクエスト処理時のデータ検証不足により、ブラウザの保護を回避して任意のファイルが取得され、スクリプトが動いてしまう不具合が原因です。この脆弱性は GHSA-632h-h47v-g4x4 として管理されています。影響を受けるバージョンは 1.14.30 から 1.18.21 です。安全を確保するための対応策として、最新の 1.18.22 以降への即時アップデート/起動中プロセスの再起動/適切な認証パスワードの適用が求められます。

You must be logged in to post a comment.