












VS Code存在一处高危安全漏洞:开发者在恶意项目文件夹内执行一次Click,攻击者就可以获得其工作站的持久访问权限。 该攻击滥用VS Code源码编辑器中支持Click触发的链接,绕过工作区信任(Workspace Trust)机制的防护。工作区信任功能的设计初衷,是在用户打开来源不明的代码时提供安全保护。当文件夹被标记为不可信时,VS Code会进入受限模式。
按照设计逻辑,受限模式会拦截各类高风险操作,包括运行任务、启动调试器、执行终端命令等。其核心原则非常明确:用户仅打开未知代码仓库的行为,不应当执行攻击者可控的代码。 但Remedio的研究人员发现一条攻击路径:恶意项目可通过构造的command:协议链接,触发VS Code的内部命令。 VS Code会自动识别README、代码注释、Markdown文档等文件中的URL,用户通常可通过Ctrl+click打开这类链接。正常情况下,开发者默认这类链接只会跳转至网站或文档页面。 但VS Code还支持特殊的command:协议URL。这类链接不会唤起浏览器,而是可以直接调用编辑器内部命令并传入参数。VS Code内置了数百个命令,用户安装的扩展也可添加更多自定义命令。
其中风险最高的是workbench.extensions.installExtension命令。根据VS Code官方命令参考文档,该命令可通过扩展标识符或VSIX扩展包URI,直接安装对应扩展。
工作区信任提示,这是整个安全功能的核心校验环节(来源:Remedio)
攻击者可将这类命令链接隐藏在“安装项目依赖”“初始化项目配置”等看似无害的文本背后。如果受害者在源码文件中对链接执行Ctrl+click操作,编辑器就会收到指令,安装攻击者预先存放在项目文件夹内的恶意VSIX包。
VS Code扩展并非普通配置文件,它能够以当前登录用户的权限运行JavaScript或TypeScript代码。这意味着恶意扩展可访问本地文件、源代码、SSH密钥、云凭证、浏览器可读取的令牌以及各类开发工具。
这种威胁的影响并不局限于初始的那次Click。扩展一旦安装完成,就会驻留在系统中,在后续每次VS Code启动时自动激活。
即便受害者关闭恶意项目、重启电脑,之后打开可信代码仓库,攻击者植入的扩展仍会在后台静默加载运行。

攻击效果:工作区仍处于受限模式时,calc.exe已被启动,同时攻击者写入了标记文件(来源:Remedio)
这一漏洞对开发者工作站的威胁尤其严重。开发者通常持有私有代码仓库、CI/CD系统、签名基础设施、云账号以及生产环境密钥的访问权限。单台开发者设备失陷,就可能成为大规模软件供应链事件的突破口。
微软在工作区信任功能的官方文档中说明,用户在受限模式下安装扩展时,系统会弹出提示,询问用户是否信任当前工作区,或确认是否安装扩展。不支持工作区信任机制的扩展,安装后会被限制功能,或直接被禁用。
但Remedio研究团队指出,问题在于攻击者构造的本地VSIX扩展,可主动声明自身支持不可信工作区。如果VS Code未显示明确的安全警告就直接认可该声明,攻击者就能在工作区保持不可信状态的前提下,完成恶意扩展的安装。
这一漏洞暴露的核心问题是,安全边界必须在所有场景下统一生效。如果原始源码编辑器中仍可执行同类危险命令链接,那么仅在Markdown渲染预览界面拦截这类链接远远不够。
攻击者植入的恶意扩展会出现在已安装扩展列表中,外观与正常扩展无异(来源:Remedio)
开发者应避免对陌生仓库内的链接执行Click操作,尤其是那些声称可安装依赖、配置环境、启动项目初始化流程的链接。用户应保持工作区信任功能处于开启状态,定期检查已安装的扩展列表。 一个实用的缓解措施是,通过以下用户设置关闭编辑器中支持Click触发的链接功能:
"editor.links": false
该设置会阻止VS Code在源码编辑器中自动识别并直接打开链接,切断本次披露的攻击手法所利用的Click路径。根据VS Code默认配置文档的说明,该选项的作用正是控制编辑器是否识别链接,并将其设为可通过Click触发的状态。 企业也应通过集中策略管控扩展安装权限,仅允许安装经过审批的发布者及扩展。在微软全面修复所有编辑器界面的命令链接处理逻辑之前,开发者应将不可信代码仓库中的所有链接视为潜在恶意内容,谨慎对待。
参考来源:
One Click in a Malicious VS Code Project Can Give Attackers Persistent Access to Your PC
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。