在恶意 VS Code 项目中单击一下,就可能让攻击者永久访问您的电脑
Rhinoer
Rhinoer
犀牛安全
2026年10月14日 00:00
北京
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
Visual Studio Code 存在一个严重的安全漏洞,攻击者只需在恶意项目文件夹中单击一下,即可获得对开发人员工作站的持久访问权限。
该攻击利用 VS Code 源代码编辑器中的可点击链接绕过工作区信任机制的保护。工作区信任机制旨在保护用户在打开来自未知来源的代码时免受伤害。当文件夹不受信任时,VS Code 会进入受限模式。
它应该能够阻止诸如运行任务、调试器或终端命令等危险操作。其核心思想很简单:仅仅打开一个未知的代码库不应该执行攻击者控制的代码。
然而,Remedio 的研究人员发现了一条途径,恶意项目可以通过精心构造的命令触发VS Code 内部命令:link。
VS Code 会自动检测 README 文件、注释和 Markdown 文档等文件中的 URL。用户通常可以使用 Ctrl+单击打开这些链接。通常,开发者希望这些链接打开网站或文档页面。
但 VS Code 还支持一种特殊命令:URL。这些链接不会打开浏览器,而是可以调用编辑器内部命令并向其传递参数。VS Code 内置了数百个命令,而安装的扩展程序还可以添加更多命令。
恶意 VS Code 项目启用一键式持久访问
需要关注的一个命令是 workbench.extensions.installExtension。根据 VS Code 的命令参考,该命令可以通过使用扩展标识符或 VSIX 扩展包 URI 来安装扩展。
攻击者可以将命令链接隐藏在看似无害的文本后面,例如“安装项目依赖项”或“设置此项目”。如果受害者在源文件中按住 Ctrl 键并单击该链接,编辑器可能会被指示安装放置在项目文件夹中的恶意 VSIX 包。
VS Code 扩展不仅仅是一个配置文件。它可以以已登录用户的权限运行 JavaScript 或 TypeScript 代码。这意味着恶意扩展可以访问本地文件、源代码、SSH 密钥、云凭证、浏览器可访问的令牌或开发工具。
危险不仅限于首次点击。一旦安装,扩展程序就会一直保留在系统中,并在以后的 VS Code 会话中激活。
受害者可能会关闭恶意项目,重启计算机,然后打开一个可信的软件仓库。与此同时,攻击者的扩展程序仍在后台加载。
这使得开发人员工作站面临的问题尤为严重。开发人员通常拥有对私有代码库、CI/CD 系统、签名基础设施、云账户和生产机密信息的访问权限。一旦某个开发人员的设备遭到入侵,就可能引发更大规模的软件供应链安全事件。
微软的 Workspace Trust 文档指出,在受限模式下安装扩展程序时,系统可能会提示用户信任工作区或安装扩展程序。不支持 Workspace Trust 的扩展程序可能会以功能受限或被禁用的状态安装。
据 Remedio Research 称,令人担忧的是,精心构造的本地 VSIX 扩展程序可以声称支持不受信任的工作区。如果 VS Code 接受此声明而未显示任何有意义的安全警告,攻击者可能能够在工作区仍处于不受信任状态时安装该扩展程序。
更广泛的教训在于要始终如一地应用安全边界。如果同样的链接仍然可以通过原始源代码编辑器执行,那么仅仅在渲染后的 Markdown 预览中屏蔽危险的命令链接是不够的。
开发者应避免点击不熟悉的代码库中的链接,尤其是那些声称会安装依赖项、配置环境或启动项目设置操作的链接。用户也应保持工作区信任功能启用,并定期检查已安装的扩展程序。
一个切实可行的缓解方法是通过以下用户设置关闭编辑器中的可点击链接:json \"editor.links\": false。
此设置会阻止 VS Code 自动检测并直接从源代码编辑器打开链接,从而消除报告中提到的点击路径。该设置在 VS Code 的默认配置中有详细说明,用于控制编辑器是否检测链接并使其可点击。
组织还应通过集中式策略限制扩展程序的安装,仅允许已批准的发布者或扩展程序进行安装。在微软全面解决所有编辑器界面上的命令链接处理问题之前,开发人员应将不受信任的代码库中的链接视为潜在恶意链接。
信息来源:CyberSecurityNews
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论