技術 約5分で読めます

OpenCodeに未認証RCEとXSS経由RCEの2件、220,000超のインスタンスが露出

オープンソースのAIコーディングエージェント「OpenCode」(Anomaly Co製)に2件の重大脆弱性が公開された。CVE-2026-22812(CVSS 8.8 HIGH)は認証なしのHTTPサーバー経由でシェルコマンドを実行できる。CVE-2026-22813(CVSS 9.4 CRITICAL)はMarkdownレンダラーのXSSをトリガーにWebSocket経由でRCEに到達する。どちらもPoCがGitHubで公開済みで、220,000件以上のインスタンスがインターネットに露出している。

CVE-2026-22812: 無認証HTTPサーバーによるRCE

OpenCodeはデフォルトで認証なしのHTTPサーバーを 0.0.0.0 にバインドして起動する。以下のエンドポイントが誰でも叩ける状態で開いている。

エンドポイント操作
POST /sessionセッション作成
POST /session/{id}/shellシェルコマンド実行
GET /file/content任意ファイル読み取り

CWEは CWE-306(重要機能の認証欠落)、CWE-749(危険なメソッドの露出)、CWE-942(許容的なCORSポリシー)の3点。CORS設定が無制限なため、「ローカルで動かしているから安全」という前提が崩れる。悪意あるWebページを開くだけで、そのページのJavaScriptが /session/{id}/shell にリクエストを投げてコマンドを実行できる。

graph TD
    A[攻撃者がフィッシングページを用意] --> B[被害者がページを開く]
    B --> C[JavaScriptがlocalhost:HTTPポートに<br/>POST /session/{id}/shellを送信]
    C --> D[OpenCodeがコマンドを実行<br/>CORSチェックなし]
    D --> E[シェルアクセス取得]
    E --> F[ファイル読み取り・データ窃取・マルウェア展開]

PoCは 0xgh057r3c0n/CVE-2026-22812(GitHub)で公開されており、コマンド実行・ファイル読み書き・インタラクティブシェル取得の3モードがある。

# 脆弱性チェック
python3 CVE-2026-22812.py -t http://target:port --check

# コマンド実行
python3 CVE-2026-22812.py -t http://target:port -c "whoami"

# インタラクティブシェル
python3 CVE-2026-22812.py -t http://target:port -i

修正は OpenCode 1.0.216 でHTTPサーバーへの認証が実装された。

CVE-2026-22813: XSSからWebSocket経由のRCE

CVSSはv4.0で 9.4 CRITICAL、v3.1ではNISTが6.1 MEDIUMと採点しているが、v4.0の評価が実態に近い。

OpenCodeのWeb UI(localhost:4096)が使うMarkdownレンダラーはLLMの出力をDOMへ直接挿入する。DOMPurifyによるサニタイズもCSP(Content Security Policy)も未実装だった。

攻撃の流れ。

graph TD
    A[攻撃者がプロンプトインジェクション<br/>または悪意あるコンテキストを注入] --> B[LLMがHTMLを含む出力を生成]
    B --> C[Markdownレンダラーが<br/>HTMLをDOMへ直接挿入]
    C --> D[悪意あるJavaScriptが実行<br/>XSS成立]
    D --> E[既存のWebSocket接続を悪用]
    E --> F[シェルコマンド実行<br/>RCE成立]

プロンプトインジェクションを組み合わせると、LLMが中継役になってXSSペイロード(悪意あるスクリプト断片)を生成する構成になる。AIコーディングエージェントが信頼するファイルシステムや会話コンテキストに攻撃者が書き込める状況なら、ユーザーの操作なしに攻撃チェーンが完結する。

修正は OpenCode 1.1.10 でMarkdownレンダラーのサニタイズとCSPが導入された。

220,000超のインスタンスが露出

SecurityScorecardの調査では、135,000件のOpenClawインスタンスが安全でないデフォルト設定でインターネットに公開されており、うち12,812件がRCE悪用可能な状態だった。OpenCodeとOpenClawを合わせると220,000件超に達する。

これはOpenClawのセキュリティ問題が以前から指摘されていた流れの延長にある。3月に公開されたComposio社の分析では、OpenClawのSkillHubで配布されていたスキルの7.1%に脆弱性が含まれており、30,000以上のインスタンスが露出していたと報告されている(OpenClawのスキル7%に深刻な脆弱性、30,000インスタンス超が露出)。今回はそれとは別製品・別経路での問題になる。

ClawHub経由のサプライチェーン汚染

並行して、OpenClawのパッケージレジストリ「ClawHub」でも組織的な攻撃キャンペーン(一連の汚染活動)が確認されている。「ClawHavoc」と名付けられたこのキャンペーンでは、1,184件以上の悪意あるパッケージが検出され、Bitdefenderの分析によればレジストリ全体の約20%が悪意ありと判定された。

全パッケージが同一手口で動く。偽インストールスクリプト経由でAtomic macOS Stealer(AMOS)を展開し、以下を窃取する。

  • パスワードマネージャの保存データ
  • ブラウザのCookie・セッショントークン
  • 暗号資産ウォレット
  • macOS Keychain

335件が同一の攻撃者によるものとBitdefenderは判定しており、Trend Microも企業端末での展開をテレメトリで確認している。

AIエージェントのエコシステムでは「スキルやパッケージをインストールして機能を拡張する」設計が一般的だが、レジストリの審査基準が整備される前に大量のパッケージが流入した結果、npmやPyPIで繰り返されてきたサプライチェーン攻撃と同じ構図に陥っている。

LangChainとLangGraphにも3件の独立した脆弱性(CVSS 9.3のデシリアライゼーション等)が報告されたばかりで(LangChainとLangGraphに3件の脆弱性)、AIフレームワーク周辺のセキュリティ問題が立て続けに表面化している。

対処

CVE修正バージョン対応内容
CVE-2026-22812OpenCode 1.0.216HTTPサーバーへの認証実装
CVE-2026-22813OpenCode 1.1.10Markdownレンダラーのサニタイズ、CSP導入

即時更新が難しい場合の暫定措置として、ファイアウォールルールでHTTPサーバーのポートをローカルループバック(127.0.0.1)のみに制限するか、使用しない間はサービスを停止する。Web UIにアクセスする場合もCSP未設定の状態での利用は避けたい。