世界を動かす技術を、日本語で。

OpenCodeにおける認証されていないリモートコード実行

2026年1月12日原文(cy.md)

概要

  • OpenCode の過去バージョンにおける 深刻な未認証リモートコード実行脆弱性 の概要
  • 自動起動するWebサーバ が原因で、外部から任意のコマンド実行が可能
  • v1.1.10以降 でサーバはデフォルト無効化、ただし有効化時は依然として危険
  • CORS設定やmdns利用時のリスク も指摘
  • ユーザー・開発者向けの対策と推奨事項 を解説

OpenCodeの重大な脆弱性(CVE-2026-22812)

  • OpenCode はAIコーディングアシスタントとして広く利用されるnpmパッケージ(opencode-ai)
  • v1.1.10未満 では、未認証のWebサーバが自動起動し、外部からの接続で 任意のコード実行 が可能
  • サーバ起動時にユーザーへの通知なし、気づかずに攻撃対象となる危険
  • サーバAPI は以下のエンドポイントを公開
    • 任意シェルコマンド実行(POST /session/:id/shell)
    • インタラクティブ端末セッション生成(POST /pty)
    • 任意ファイルの読み取り(GET /file/content)
  • CORSポリシー は*.opencode.aiを許可
    • opencode.aiやサブドメインのXSSや侵害時に 全ユーザーが危険 に晒されるリスク

攻撃ベクトルと影響範囲

  • v1.0.216未満 :任意のWebサイトからユーザーPC上でコード実行が可能
  • v1.1.10未満 :ローカルマシン上のプロセスやlocalhost/127.0.0.1経由でコード実行可能
  • 全バージョン :サーバ有効時、ローカルプロセスやlocalhost経由のWebページから未認証で実行可能
    • --mdnsフラグ 使用時はローカルネットワーク上の他マシンからも攻撃可能
    • サーバ稼働中の可視化手段がない ため、ユーザーが危険に気づきにくい

実証コード(PoC)

  • ローカル攻撃例(サーバ有効時)
    • 任意プロセスからAPI経由でコマンド実行
    • 例(curl, jq利用):
      API="http://127.0.0.1:4096"
      SESSION=$(curl -s -X POST "$API/session" -H "Content-Type: application/json" -d '{}' | jq -r '.id')
      curl -s -X POST "$API/session/$SESSION/shell" \
        -H "Content-Type: application/json" \
        -d '{"agent":"build","command":"id > /tmp/pwned.txt"}'
      
  • ブラウザ経由の攻撃例(v1.0.216未満)
    • 任意Webサイトからfetchでコマンド実行
    • ChromeはLocal Network Access保護あり、Firefoxはサイレント実行

ユーザー向け緊急対策

  • opencode --version でバージョン確認
  • v1.1.10以上 へアップデート推奨
  • configファイル 内のserver.port/server.hostname設定確認
  • --mdnsフラグ は使用しない(0.0.0.0バインドで全ネットワークからアクセス可能)
  • サーバ有効時はopencode.aiやサブドメインへのアクセス禁止
  • サーバ有効時はローカルプロセスからも攻撃可能 であることを認識

ベンダー対応・公開タイムライン

  • 2025-11-17:support@sst.devへ初報告(無反応)
  • 2025-12-27:GitHub Security Advisory提出(無反応)
  • 2025-12-29:他ユーザーが独自に公開報告
  • 2025-12-30:v1.0.216でCORS制限(サイレント修正)
  • 2026-01-09:v1.1.10でサーバデフォルト無効化
  • 2026-01-11:完全公開
  • CVE-2026-22812 取得

推奨事項・今後の改善案

  • CORS許可範囲の最小化 (v1.0.216で対応済み)
  • サーバデフォルト無効化 (v1.1.10で対応済み)
  • 全APIリクエストで認証必須化
  • サーバ稼働時のUIやメッセージで明示的に通知
  • --mdns利用時のリスク明記
  • TLS通信の強制
  • GitHub Security AdvisoryとCVEの公開・管理
  • セキュリティ連絡先の監視体制強化
  • OpenCode運営・ユーザー間の信頼関係の明確化

まとめ・注意喚起

  • 旧バージョン利用者は即時アップデート必須
  • 詳細・最新情報は公式アドバイザリ参照
  • サーバ有効時のリスクを十分理解し、必要最小限の設定で利用すること

質問・連絡先: cy.md 最終更新日: 2026-01-12 コード分析協力: Claude AI (Opus 4.5)


追記 過去バージョンのOpenCodeは、Webブラウザ経由で任意コマンド実行を許可するサーバを自動起動していました。必ず v1.1.10以降 を利用してください。

Hackerたちの意見

開示のタイムラインが心配だね。2025年11月17日に報告されて、何度も連絡を試みたのに「返事なし」って…あんまり良い印象じゃないよね。

オープンコードの開発者たちが真剣に取り組もうとしているみたいだね。

こんにちは、メンテナーです。セキュリティレポートの対応がうまくできていなかったです。利用が急増して、問題が山積みになってます。今週、どうやってこれを改善するかアドバイスをもらうために何人かと会う予定です。バグバウンティプログラムを資金調達して、監査も行うつもりです。

このプロジェクトが時間とともにどう成長するのか、すごく気になってる。最初のオープンソースのターミナルエージェントフレームワーク/ランナーとしてリードを取ってるみたいで、どんどん成長してる感じがする。組織が管理できる以上の速さで進んでいる気がする。プロジェクトの主な焦点は、コードベースの仕様や要件、開発よりも、プロジェクトの作業をどう整理するかにあるべきだと思うんだけど。開発のスピードを管理するために、チームがどんな一般的なアドバイスを受けているのか知りたいな。アナーキストの組織原則についても考えたことある?

オープンさに対するリスペクト。いい仕事してるし、頑張ってね。

元々はもっとポジティブなメッセージだったんだけど、状況を見てちょっと悲観的になっちゃった。何度も連絡を試みたのに返事がなかったっていうのは、ちょっと心配だよね。これは全然良い印象じゃないし、早く解決できることを願ってる。SSTフレームワークの頃からDaxを尊敬してるけど、これは本当に良くない状況だよ。2025年11月17日に報告されたのに、何度も「返事なし」って…確かに今はバグを報告してるけど、オープンコードが最も有名なオープンソースのコーディングエージェントだったから、もっと多くのサイバーセキュリティの人たちが見てたはずだよね。何かが実際に使われていた可能性もあると思う。だから、gvisorや適切なサンドボックス化の取り組みを行うべきだと思う。今の時点で、どれだけのバグが残っていて、RCEにつながる可能性があるのかもわからない。Dax、注意が散漫だと、敵はもっとバグやRCEの脆弱性を探し始めるから、時間が限られてると思う。できるだけ早くオープンコードをもっと安全にするための対策が進むことを願ってる。

これを引き受けてくれておめでとう、いい仕事だよ、リスペクト。

クロードにセキュリティの問題を直してもらって、二度と起こらないようにすればいいんじゃない?

大丈夫だよ、すぐに直せるなら問題ないはず。

頑張ってね!責任を持って正直にやってることを話してくれてありがとう。そういうのは簡単じゃないし、感謝してるよ!

どんどん新機能を追加するけど、肝心な部分は放置されてるよね。プランを売り始めた時に使うのやめた。Opencodeの主な目的は複数のモデルを使うことだったけど、モデル間でのコンテキスト共有が今は面倒で実用的じゃないって分かった。だから、Claude CodeとCodexを並行して使うことに戻った。とはいえ、複数のベンダーやモデルを活用できるオープンプラットフォームは絶対に必要だと思う。ただ、Anthropic、OAI、Googleの大手3社がそんなコントロールを手放すとは思えないな。

大手のCを使ってる私から言わせてもらうと、ampcode[0]とCrush[1]+z.ai GLMを追加でおすすめするよ。Ampは小さなユーティリティスクリプトや変更を無料でできるし(特に広告を有効にすれば)、Crush+GLMはClaudeやCodexが作ったプランに従うのが結構得意だよ。[0] https://ampcode.com/ [1] https://github.com/charmbracelet/crush

Hacker Newsで議論の続きを見る