AI INSIGHT

文件名多一个点,VS 里的 Copilot 能执行命令

AI新闻 Cocoloop 2026-10-14 11:14
AI 摘要

编辑精选CVE-2026-103572,CVSS 8.8,微软评级"重要"。8 月 4 日报告,9 月 16 日确认,10 月 13 日随补丁日修复;受影响的是 Visual Studio 和 SSMS 共用的同一个 Copilot 核心组件,研究者拿到的赏金是 0 美元。 微软 10 月 13 日的月度补丁里修了一个 Copilot 相关的远程代码执行漏洞,编号 CVE-2026-103572

微软 10 月 13 日的月度补丁里修了一个 Copilot 相关的远程代码执行漏洞,编号 CVE-2026-103572,影响 Visual Studio(含 2026 和 2022 等旧版本)以及 SQL Server Management Studio(SSMS)。发现者是安全研究员 Johann Rehberger,他同日在个人博客 Embrace The Red 公开了技术细节。

两款产品共用一个核心库 Microsoft.VisualStudio.Copilot.Core.dll,漏洞就在这里,所以一处问题同时打到两个产品。

一个句点怎么绕过检查

Copilot 在 IDE 里能替用户写文件,但 .mcp.json、Visual Studio 的设置文件这类配置被列为受保护对象,不许它碰。问题出在检查方式上:校验逻辑比对的是原始字符串。

Windows 的 Win32 层有个老规矩,文件名末尾的句点会被自动去掉。Rehberger 引用了微软自己的文档:“File and Folder names that end with the ASCII Period (0x2E) character will also be saved without this character.” 于是 settings.json. 在校验时和 settings.json 不是同一个字符串,检查放行;真正落盘时末尾的点被吃掉,写进去的就是那个受保护文件。

攻击链大致是这样:攻击者先通过间接提示注入影响 Copilot,比如让某个 MCP 服务器返回的数据里夹带指令;Copilot 照做,往 .mcp.json 之类的配置里写入攻击者想要的内容;IDE 读配置时拉起恶意命令。在 Visual Studio 里,改相关工具路径设置也能触发命令执行。

Rehberger 还顺带报了几个问题:用 ..\ 做路径遍历能读到受限文件,有些文件会泄露安装标识,MAI-Code-1-Flash 模型对间接提示注入的抵抗力偏弱。按他的分析,微软的修复是加了一次 GetFullPath 调用,先把路径规范化,去掉末尾的点、展开 ..,再做比对。

同一类洞的第二次

这不是 Rehberger 第一次从配置文件下手。2025 年 8 月,他披露过 VS Code 里 GitHub Copilot 的一个远程代码执行漏洞(CVE-2025-53773):提示注入让 Copilot 改写工作区的 settings.json,打开免确认自动执行工具的开关,之后就能直接跑命令。那次也是随微软补丁日修复。

两次放在一起看,套路是一致的:智能体被允许写文件,配置文件决定智能体和 IDE 能做什么,只要能让智能体写到配置,权限就被它自己放大了。2025 年那次的教训是给配置文件加保护名单,这次被绕过的正是这层名单。Rehberger 在文中的总结是:

“Security controls around agents must hold even when the agent itself is compromised or misaligned.” 围绕智能体的安全控制,必须在智能体本身被攻陷或行为失准时依然成立。

用户该做什么

时间线上,Rehberger 8 月 4 日提交报告,8 月 4 日到 7 日补充了 Visual Studio 的影响和利用细节,8 月 30 日跟进,微软 9 月 16 日确认,10 月 11 日告知赏金为 0,10 月 13 日发布修复。微软为何不给赏金,公开材料里没有解释。

对用 Visual Studio 和 SSMS 的团队,处理方式只有一条:尽快装上本月补丁。用 Copilot 连接第三方 MCP 服务器的环境风险更高,因为提示注入的入口正是这些外部数据。

参考来源:Embrace The Red 技术博客、CocoLoop、微软安全更新指南;CVE 编号、CVSS 分值与披露节点以研究者博客和微软公告为准。

来源:Cocoloop
阅读原文