AI コーディングツールの MCP 認証で「URL を開く」処理がコード実行になる問題に備える(OpenCode 事例)
Windows・WSL 版 OpenCode では、リモート MCP サーバーの OAuth を始めるだけで任意コードが実行され得た。URL スキームの検査では防げないので、ツールを更新し、信頼できないリモート MCP サーバーをつながない。
何が起きたか
- 影響したのは Windows・WSL 上の OpenCode 1.0.137〜1.18.32。初の修正版は 1.18.33(確認時の最新は 1.19.4)。macOS と WSL 以外の Linux は対象外。
- 原因は依存ライブラリー
open10.1.2 で、認証用 URL が PowerShell のコマンドとして解釈され得たこと。1.18.33 で引数処理を直したopen11.0.4 に更新された。 - 攻撃者が制御するリモート MCP サーバーへの OAuth 開始が条件。正規のサーバーが後から侵害された場合も成立し、ログイン完了や権限付与の同意は不要だった。HTTPS の URL でも成立する。
- 修正はブラウザー起動処理の整理として公開され、CVE やセキュリティー勧告は報告時点で出ていない。開発元は、利用者が設定した外部 MCP サーバーの挙動を脅威モデルの対象外としている。
対策
- Windows・WSL で OpenCode を使っているなら、導入版を確認して最新版に更新する。
- すぐ更新できない場合は、信頼できないリモート MCP サーバーを設定から外す。
- 「セキュリティー修正」と書かれていない更新にも修正が含まれることがある。AI コーディングツールは普段から最新版に追従する。
- 自分で「外部から受け取った URL をブラウザーで開く」処理を書くときは、シェルや PowerShell を経由せず、引数を分けて渡す API を使う。
https://で始まるかの確認だけでは、コマンドとして解釈される問題は防げない。
注意点
- ほかの AI コーディングツールでも、MCP の OAuth で外部 URL を開く処理は同じ形になりやすい。信頼できる MCP サーバーだけを登録する方針は共通で有効。
- 関連: AI ゲートウェイに預けた API キーが漏れたときの対応(OpenCode Console 事例)