OpenCodeにおける認証されていないリモートコード実行
95日前原文(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以降を利用してください。