VSCode 漏洞曝光:打开项目文件夹即可自动执行恶意脚本,开发者需警惕
Visual Studio Code 是一款流行的开源代码编辑器[1]。但它远不止是一个简单的编辑器,更是一个支持多种语言、可在多平台上运行的完整开发平台。全球开发者都在使用它,这使得它成为威胁行为者的“肥肉”,因为它可以通过扩展进行功能拓展。
技术分析
Visual Studio Code 是一款广泛使用的开源代码编辑器和开发平台,支持多种编程语言和扩展。该漏洞源于 VSCode 对自动任务执行的支持,这些任务定义在项目 .vscode 目录下的 tasks.json 文件中。该文件可以指定在特定事件(例如打开文件夹时)自动运行的 shell 命令或脚本。攻击者可以构造恶意的 tasks.json 文件,其中包含混淆的命令,例如经过 Base64 编码的 PowerShell 脚本,这些脚本在 VSCode 中打开项目文件夹后会立即执行。这种自动执行绕过了通常的用户交互提示,从而在开发者的机器上实现远程代码执行。该技术类似于办公套件中的宏执行,但由于其采用了 JSON 配置格式并利用了 VSCode 的自动化特性,因此更加隐蔽。此前,恶意扩展就已滥用过类似机制,而此方法通过利用项目特定的配置文件而不仅仅是扩展,进一步扩大了攻击面。尽管尚未有活跃的利用报告,但鉴于 VSCode 在全球开发者中的普及度,其被滥用的可能性非常大。
威胁行为者的惯用手法是将恶意脚本嵌入到看似合法的扩展或项目文件中,一旦打开,就会执行恶意负载,从而破坏系统完整性、窃取数据或建立持久化控制。此攻击需要受害者打开一个包含恶意 .vscode/tasks.json 的文件夹,这意味着很可能涉及社会工程学或供应链攻击。检测颇具挑战性,因为 tasks.json 文件本身是合法的配置文件,而且恶意命令可以被混淆。此漏洞凸显了开发环境中自动脚本执行功能的风险,以及对项目文件和扩展进行仔细验证的必要性。
潜在影响
对于欧洲组织而言,此漏洞对软件开发环境构成了重大风险。开发者机器被入侵可能导致知识产权被盗、恶意代码被植入软件供应链,以及在企业网络内部进行横向移动。鉴于 VSCode 在欧洲,尤其是在科技行业发达的国家中广泛使用,其潜在影响包括:扰乱开发工作流程、泄露敏感代码库以及造成声誉损害。利用此漏洞的攻击者最初可能无需提升权限即可获得远程代码执行能力,从而为进一步的权限提升铺平道路。自动执行功能可被滥用来部署勒索软件、间谍软件或后门程序。由于开发者通常可以访问关键的内部系统和代码仓库,一次成功的攻击可能会级联放大,导致更广泛的组织受损。此攻击利用了合法的配置文件,具有隐蔽性,使得检测和响应变得复杂。那些对开发者环境安全控制不够成熟的欧洲组织尤其容易受到攻击。此外,此威胁还可能影响托管服务提供商和软件供应商,通过供应链攻击放大风险。
缓解建议
- 实施严格策略,限制或禁用 VSCode 中的自动任务执行,特别是
tasks.json文件中的runOn属性。 - 教育开发人员仔细检查和验证项目文件夹中的任何
.vscode目录和tasks.json文件,特别是那些来自外部或不可信来源的。 - 采用端点检测和响应解决方案,监控由 VSCode 进程触发的可疑 PowerShell 或 shell 命令执行。
- 对扩展和项目文件强制执行代码签名和完整性检查,以防止被篡改。
- 使用应用程序白名单来限制 VSCode 启动的未经授权的脚本或命令的执行。
- 定期审计和监控开发者工作站,查看是否存在意外的
.vscode目录或不寻常的任务配置。 - 鼓励使用容器化或沙箱化的开发环境来隔离潜在的恶意活动。
- 与安全团队合作,将扫描项目目录中恶意
tasks.json文件的操作集成到 CI/CD 管道中。 - 保持 VSCode 及其扩展的更新,以便从安全补丁和改进中受益。
- 限制工作站上的开发者权限,以减少潜在代码执行带来的影响。
受影响的国家/地区
德国、英国、法国、荷兰、瑞典、芬兰、爱尔兰、比利时
来源: SANS ISC 处理者日记 发布时间: 2026年1月21日,星期三FINISHED aeYFGlNGPch5/i0AskAWpmMVXj3lzK9JFM/1O1GWF7ABvXq8XWUzRjnftEOWTR43DXqvAu/f7CSdaqJNiSUx7fUYbaMZ82A1MYa3pu/lOKN65tIHx+fE8FrhzH0zQq1I