CVE-2026-70094:Visual Studio Code 工作区信任机制绕过,打开恶意项目可能触发远程代码执行
摘要: 2026 年 11 月 10 日,微软披露 Visual Studio Code 安全漏洞 CVE-2026-70094,涉及 JavaScript 调试器的自动附加功能与工作区信任机制。攻击者可能通过特制项目文件,在开发者打开项目后诱导 VS Code 执行未经授权的代码。漏洞影响 VS Code 1.145.3 之前的版本,官方已发布修复。本文介绍漏洞原理、攻击条件、风险及开发者的自查和升级方法。
一、漏洞概述
Visual Studio Code(VS Code)是广泛使用的代码编辑器,支持 JavaScript、TypeScript、Python、Java、Go 等多种语言。
对于开发者而言,打开一个陌生的 GitHub 仓库通常是很常见的操作。
为了降低恶意项目带来的风险,VS Code 引入了 Workspace Trust(工作区信任)机制。当用户打开来源未知的项目时,编辑器可以进入受限模式,限制部分可能执行代码的功能。
然而,CVE-2026-70094 涉及的安全问题表明,JavaScript 调试器的自动附加功能可能绕过这一保护机制。
根据微软 2026 年 11 月 10 日发布的 GitHub Security Advisory,该漏洞已在 VS Code 1.145.3 中修复。
| 项目 | 详细信息 |
|---|---|
| CVE 编号 | CVE-2026-70094 |
| 影响软件 | Microsoft Visual Studio Code |
| 影响组件 | JavaScript Debugger |
| 漏洞类型 | 工作区信任机制绕过、潜在远程代码执行 |
| 首次披露日期 | 2026 年 11 月 10 日 |
| 受影响版本 | 1.145.3 之前的相关版本 |
| 官方修复版本 | 1.145.3 |
| 攻击前提 | 用户打开攻击者控制的项目,并满足特定调试触发条件 |
| 潜在影响 | 以开发者权限执行未经授权的代码 |
关于 CVSS 评分: 本次核验尚未取得能够可靠确认的 CVSS 3.1 或 4.0 官方评分及完整向量,因此暂不填写具体分值。漏洞严重性应结合官方公告和实际利用条件判断,避免将未经核实的评分写入技术资料。
二、漏洞原理:为什么打开项目可能导致代码执行?
1. VS Code 的工作区信任机制
VS Code 允许开发者直接打开整个项目目录。
项目中可能包含:
example-project/
├── package.json
├── src/
│ └── index.js
├── .vscode/
│ ├── settings.json
│ └── launch.json
└── README.md
其中,.vscode 目录可以保存工作区设置和调试配置。
这些配置能够影响编辑器的行为。
例如,launch.json 可以定义调试程序、启动参数和运行环境。
如果项目来自可信开发团队,这些功能通常能够提高开发效率。
但对于陌生仓库,项目配置可能由攻击者控制。
因此,VS Code 需要判断当前工作区是否可信,并决定哪些功能可以运行。
2. JavaScript 调试器的自动附加功能
VS Code 的 JavaScript 调试器提供 Auto Attach 功能。
开启后,调试器可以自动附加到符合条件的 Node.js 进程,帮助开发者调试应用程序。
例如,开发者执行:
node app.js
在适当配置下,VS Code 可以自动识别 Node.js 调试目标。
这个功能需要编辑器、终端和调试器之间进行协作。
相关机制通常涉及:
- VS Code 工作区配置;
- 集成终端;
- Node.js 运行环境;
- JavaScript 调试器;
- 调试进程的启动和附加逻辑。
当这些组件处理来自工作区的配置时,需要遵守工作区信任策略。
3. 漏洞的核心问题
CVE-2026-70094 涉及 JavaScript 调试器自动附加功能与工作区信任机制之间的安全边界。
从安全设计角度看,问题可以抽象为:
开发者打开陌生项目
|
v
VS Code 判断工作区可信状态
|
v
工作区处于受限模式
|
v
JavaScript 调试器处理相关配置
|
v
自动附加功能进入特定执行路径
|
v
工作区信任限制可能被绕过
|
v
执行未经授权的代码
这里最值得关注的是信任状态在不同组件之间的传递。
假设编辑器已经将某个工作区标记为不可信,但调试器在处理自动附加逻辑时,没有正确执行相同的安全检查,就可能出现安全策略绕过。
可以用简化伪代码说明:
// 存在风险的设计示意
function handleAutoAttach(config) {
startDebugSession(config);
}
更合理的安全设计需要验证相关操作是否得到授权:
// 安全设计示意
function handleAutoAttach(config, workspace) {
if (!workspace.isTrusted) {
return;
}
startDebugSession(config);
}
上述代码仅用于解释信任检查的基本原理,并非微软实际漏洞代码或补丁实现。
具体的漏洞触发条件、内部函数调用链及补丁修改内容,应以微软官方安全公告和修复提交为准。
三、影响范围:哪些开发者需要关注?
此次漏洞主要涉及使用 VS Code 进行 JavaScript 或 Node.js 开发的用户。
| 使用场景 | 风险判断 |
|---|---|
| 使用受影响版本打开陌生项目 | 需要关注 |
| 使用 JavaScript 调试器 | 需要关注 |
| 开启 Auto Attach 功能 | 重点检查 |
| 经常克隆第三方 GitHub 仓库 | 建议优先升级 |
| 企业内部开发环境 | 取决于项目来源及相关配置 |
| 使用 VS Code 1.145.3 或更新版本 | 已包含针对该漏洞的官方修复 |
为什么开发者的电脑特别值得保护?
开发者工作站往往拥有较多敏感资源。
例如:
~/.ssh/
~/.aws/
~/.config/
项目环境变量文件
Git 凭据
云服务访问令牌
如果攻击者成功以开发者账户权限执行代码,就可能访问该账户有权读取的文件。
对于拥有生产环境部署权限的开发者,风险还可能进一步扩大。
例如,攻击者可能尝试窃取云服务凭据、修改代码仓库内容,或者利用开发者账户访问内部系统。
这些属于远程代码执行可能造成的后续危害,具体能否实现取决于攻击者获得的权限和工作站安全配置。
四、风险分析:是否已有公开 PoC 和真实攻击?
1. 攻击需要什么条件?
根据漏洞涉及的功能,风险评估需要重点考虑三个条件。
首先,目标使用受影响版本的 VS Code。
其次,开发者打开攻击者控制的项目或工作区。
最后,相关调试器行为需要进入存在问题的执行路径。
因此,开发者打开陌生项目的行为,是需要重点防范的风险入口。
2. 是否存在公开 PoC?
截至 2026 年 11 月 12 日,本次检索尚未独立核实到完整、可靠且能够稳定复现 CVE-2026-70094 的公开 PoC。
目前能够确认的重点是官方安全公告所描述的受影响组件及修复信息。
具体攻击代码、可控配置字段及利用成功率仍需进一步的公开技术证据。
3. 是否已经发生真实攻击?
截至本次核验,尚未找到能够确认该漏洞已被用于真实攻击的权威公开证据。
因此,风险判断主要依据漏洞机制及潜在后果。
公开披露、存在 PoC 和真实攻击是三个不同的证据层级。
对于开发者而言,即使尚无真实攻击报告,也应尽快安装安全更新。
五、如何检查自己的 VS Code?
1. 查看当前版本
Windows 用户可以打开 PowerShell:
code --version
Linux 或 macOS 用户可以在终端执行:
code --version
正常情况下会显示类似:
1.145.3
<commit-id>
x64
其中第一行是版本号。
如果命令无法识别,可以直接打开 VS Code,在菜单中查看:
Help → About
macOS 用户可以通过应用菜单中的 About Visual Studio Code 查看版本。
2. 检查 Auto Attach 配置
打开 VS Code 设置,搜索:
Debug: JavaScript Auto Attach Filter
或者直接打开用户设置 JSON,检查:
{
"debug.javascript.autoAttachFilter": "disabled"
}
该设置用于关闭 JavaScript 调试器的自动附加功能。
如果开发者日常不需要自动附加调试,可以考虑关闭它,以减少相关功能的使用。
但关闭 Auto Attach 仅针对该功能,仍应完成官方版本升级。
3. 检查工作区信任设置
打开 VS Code 命令面板:
Ctrl + Shift + P
搜索:
Workspaces: Manage Workspace Trust
查看当前工作区的信任状态。
对于来源未知的项目,建议保留受限模式,避免直接授予完整工作区信任。
尤其需要注意包含以下文件的项目:
.vscode/settings.json
.vscode/launch.json
.vscode/tasks.json
package.json
这些文件可能影响编辑器配置、调试行为和项目脚本执行。
六、如何修复?
1. 升级 VS Code
最直接的处理方式是安装官方安全版本。
建议升级到 1.145.3 或更新版本。
Windows 用户可以通过 VS Code 自带的更新功能检查更新。
如果使用 Windows Package Manager,也可以执行:
winget upgrade --id Microsoft.VisualStudioCode
升级完成后重新启动 VS Code,再次检查:
code --version
对于 macOS Homebrew 安装:
brew upgrade --cask visual-studio-code
对于 Linux 用户,应使用实际安装 VS Code 的软件包管理器更新。
例如,Debian 或 Ubuntu 系统中,如果通过微软官方 APT 软件源安装:
sudo apt update
sudo apt install --only-upgrade code
如果通过其他渠道安装,应检查对应软件源是否已经提供修复版本。
2. 临时缓解措施
在完成升级之前,可以采取以下措施:
- 关闭 JavaScript Auto Attach 功能。
- 对陌生项目保留 Restricted Mode。
- 避免执行来源不明的调试配置。
- 检查第三方项目中的自动化脚本。
- 避免在具有高权限生产凭据的环境中直接测试未知代码。
其中,关闭 Auto Attach 可以减少相关调试功能的使用,但无法替代安全补丁。
3. 企业开发环境如何处理?
对于集中管理开发者工作站的企业,可以通过软件资产管理系统检查 VS Code 版本。
如果使用 PowerShell,可以在单台 Windows 工作站执行:
$version = (& code --version 2>$null |
Select-Object -First 1)
Write-Output "VS Code Version: $version"
对于多台设备,可以将版本检查纳入现有终端管理流程。
还应关注使用 VS Code 进行远程开发、容器开发及访问内部代码仓库的员工。
七、总结
CVE-2026-70094 涉及 VS Code JavaScript 调试器与工作区信任机制之间的安全问题。
它提醒开发者注意一个容易忽视的风险:代码编辑器会根据项目配置执行多种自动化操作,而这些配置可能来自陌生仓库。
对于开发者,最重要的行动包括:
- 将 VS Code 更新至 1.145.3 或更新版本。
- 检查 JavaScript Auto Attach 设置。
- 对陌生项目保留工作区受限模式。
- 在执行调试任务和项目脚本前检查配置来源。
对于企业安全团队,应将开发者工作站纳入软件漏洞管理范围,尤其关注拥有云平台、代码仓库和生产系统访问权限的设备。
开发工具本身也是企业安全边界的一部分。及时更新编辑器和调试组件,有助于降低供应链攻击进入开发环境的风险。
资料核验日期:2026 年 11 月 12 日。
主要参考资料:
- Microsoft VS Code 官方 GitHub Security Advisories,2026 年 11 月安全公告。
- Microsoft VS Code 官方版本发布与更新记录。
- Visual Studio Code 官方文档:Workspace Trust。
- Visual Studio Code 官方文档:JavaScript Debugging、Auto Attach。
- GitHub Advisory Database:VS Code JavaScript 调试器相关漏洞记录。
本次登记CVE:CVE-2026-70094
- 点赞
- 收藏
- 关注作者
评论(0)