AI News HubLIVE
站内改写

VSCode Copilot Chat中的遠端程式碼執行漏洞

研究人員發現VSCode Copilot的agent模式存在提示注入漏洞,攻擊者可利用applyPatch工具中的TOCTOU漏洞繞過使用者確認,實現任意檔案寫入,進而透過覆蓋.git/config或shell配置檔案實現遠端程式碼執行。

文章情報

工程師中級

要點

  • Copilot agent模式存在提示注入漏洞,可自動處理GitHub Issue中的惡意提示。
  • applyPatch工具存在TOCTOU漏洞,檔案重新命名操作未檢查目標路徑。
  • 攻擊者可構造補丁將敏感檔案如.git/config覆蓋,實現遠端程式碼執行。
  • 漏洞利用需要受害者使用特定模型(如GPT-4.1)並停用Claude模型。

為什麼重要

這條新聞值得關注,因為Copilot agent模式存在提示注入漏洞,可自動處理GitHub Issue中的惡意提示。

技術影響

可能影響模型選型、推理成本、產品能力和評測基準。

研究人員在VSCode Copilot Chat中發現了一個嚴重的遠端程式碼執行(RCE)漏洞。該漏洞存在於Copilot的agent模式中,當維護者點選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時,會直接執行未經驗證的檔案重新命名操作,從而寫入任意檔案。

攻擊者可以透過兩種方式觸發該漏洞:直接向Copilot Chat貼上惡意提示(需要GPT-4.1模型),或建立包含惡意提示的GitHub Issue。當受害者點選“Code with Agent Mode”時,Copilot自動處理Issue並執行補丁。利用此漏洞,攻擊者可以覆蓋.git/config設定惡意sshCommand,或修改.vscode/settings.json啟用git.autofetch,下一條git fetch命令就會觸發惡意命令,從而竊取GITHUB_TOKEN。

該漏洞影響使用特定模型(如GPT-4.1)且未啟用Claude模型的使用者。研究人員已向微軟報告,VSCode團隊已釋出相關補丁。使用者應及時更新VSCode擴充套件,並謹慎處理不熟悉的GitHub Issue。