AI News HubLIVE
站内改写

VSCode Copilot Chatにおけるリモートコード実行の脆弱性

研究者がVSCode Copilotのエージェントモードでプロンプトインジェクションの脆弱性を発見。applyPatchツールのTOCTOU脆弱性を悪用し、ユーザーの確認をバイパスして任意のファイル書き込みを実現し、.git/configやシェル設定ファイルを上書きすることでリモートコード実行が可能。

記事インテリジェンス

エンジニア中級

要点

  • Copilotエージェントモードにプロンプトインジェクションの脆弱性があり、悪意のあるGitHub Issueを自動処理する。
  • applyPatchツールにTOCTOU脆弱性:ファイル名変更操作で宛先パスがチェックされない。
  • 攻撃者は.git/configなどの機密ファイルを上書きするパッチを作成し、RCEを達成できる。
  • 脆弱性の悪用には特定のモデル(例:GPT-4.1)が必要で、Claudeモデルが無効化されている必要がある。

重要な理由

このニュースが重要なのは、Copilotエージェントモードにプロンプトインジェクションの脆弱性があり、悪意のあるGitHub Issueを自動処理するためです。

技術的影響

モデル選定、推論コスト、プロダクト能力、評価基準に影響する可能性があります。

VSCode Copilot Chatに深刻なリモートコード実行(RCE)脆弱性が発見されました。この脆弱性はCopilotのエージェントモードに存在し、メンテナーがGitHub Issueの「Code with Agent Mode」をクリックすると、CopilotがIssueの説明を自動的に処理します。この動作が悪意のあるプロンプトインジェクション攻撃に利用される可能性があります。

脆弱性の核心は、applyPatchツールにおけるTOCTOU(Time-of-check to time-of-use)問題です。このツールはパッチを適用する際、ユーザー確認メカニズムがファイルの元のパス(例:README.md)のみをチェックし、名前変更操作の宛先パスを検証しません。攻撃者は無害なファイル(例:f1)を編集するように見せかけながら、実際には機密性の高い位置(.git/configや.vscode/settings.json)に内容を書き込むパッチを細工できます。

具体的には、prepareInvocationメソッドがidentify_files_neededとidentify_files_added関数を使って確認が必要なURIを収集しますが、これらの関数は「*** Update File:」と「*** Add File:」ディレクティブのみを解析し、「*** Move to:」ディレクティブを無視します。そのため、「*** Move to:」で指定された宛先パスはセキュリティチェックを通過しません。そしてinvokeメソッドでmovePathが存在する場合、未検証のファイル名変更操作が直接実行され、任意のファイル書き込みが可能になります。

攻撃者はこの脆弱性を2通りの方法で引き起こせます。直接Copilot Chatに悪意のあるプロンプトを貼り付ける方法(GPT-4.1モデルが必要)と、悪意のあるプロンプトを含むGitHub Issueを作成する方法です。被害者が「Code with Agent Mode」をクリックすると、CopilotがIssueを自動処理し、パッチを実行します。この脆弱性を悪用することで、攻撃者は.git/configを上書きして悪意のあるsshCommandを設定したり、.vscode/settings.jsonを変更してgit.autofetchを有効化し、次のgit fetchコマンドでトークンを窃取するコマンドを発動させることができます。

この脆弱性は、特定のモデル(例:GPT-4.1)を使用し、Claudeモデルが無効化されているユーザーに影響します。研究者はマイクロソフトに報告し、VSCodeチームは関連パッチをリリースしました。ユーザーはVSCode拡張機能を直ちに更新し、不審なGitHub Issueには注意する必要があります。