返回
快讯

Microsoft 修复 VS Code 一键窃取 GitHub Token 漏洞

研究人员披露,攻击者可通过 Microsoft Visual Studio Code(VS Code)中的一键攻击窃取用户 GitHub token,进而访问其可读写的仓库,包括私有仓库。攻击链利用 webview、键盘事件和恶意扩展,Microsoft 已于 2026-06-03 缓解,且称不影响 VS Code Desktop,用户无需采取行动。

网络安全研究人员披露了一种通过 Microsoft Visual Studio Code(VS Code)实施的一键攻击,该攻击可使攻击者窃取用户的 GitHub token。

安全研究员 Ammar Askar 表示:“只要点击一个链接,攻击者就有可能窃取一个 GitHub token,该 token 可以读写你的仓库,包括私有仓库。”

GitHub 支持一项名为 GitHub.dev 的功能,它会通过启动一个 VS Code 环境,在浏览器沙箱内运行一个轻量级的基于 Web 的源代码编辑器。该功能允许用户发送 pull request 并进行提交。

Askar 说:“这一功能是通过 github.com 以 OAuth token 向 github.dev 发起 POST 请求来实现的,使其能够代表你与 GitHub 交互。这个 token 并不限定于你交互过的特定仓库,这意味着它可以完全访问你能够访问的所有其他仓库。”

简而言之,该漏洞允许攻击者安装恶意 VS Code 扩展;当 GitHub.dev 接收到 GitHub OAuth token 时,恶意扩展可将其窃取。攻击方式是利用主 VS Code 窗口与 webview 之间的消息传递机制。Webview 用于渲染 Markdown 预览或编辑 Jupyter notebooks。

具体来说,该利用会在不受信任的 webview 中运行恶意 JavaScript,模拟按键(即 keydown 事件)到主编辑器窗口,通过触发“Ctrl+Shift+P”打开 Command Palette,然后安装一个由攻击者控制的扩展。该扩展会提取发送给 GitHub.dev 的 GitHub OAuth token,并查询 GitHub API,枚举受害者可访问的所有私有仓库。

值得注意的是,这种方法还利用了 VS Code 的一项名为 local workspace extensions 的功能:只要扩展放在该工作区内的 “.vscode/extensions” 文件夹中,就可以直接安装,而不会弹出额外的信任对话框,从而实际上绕过了发布者信任检查。

研究员解释说:“这其实只是个小问题,因为扩展可以在其 package.json 中做的一件事,是向 VS Code 提供额外的 keybinding。既然我们可以可靠地触发 keybinding,那就可以为任意想要的 VS Code 命令添加快捷键,比如在跳过受信任发布者检查的情况下安装扩展。”

研究员还指出,GitHub 已在 2026 年 6 月 2 日收到该漏洞通知,一个小时后该问题的细节就被公开,理由是微软过去对 VS Code 相关漏洞的处理方式。截至发稿时,Microsoft 已确认该漏洞,并表示正在修复。

Microsoft 的合作软件工程经理 Alexandru Dima 表示:“需要澄清的是,这个问题不影响 VS Code Desktop。”

更新

在文章发布后,Microsoft 告诉 The Hacker News,该漏洞已于 2026 年 6 月 3 日美国太平洋时间上午 7:30 得到处理。Microsoft 发言人表示:“这一问题已针对我们的服务完成缓解,客户无需采取任何行动。”

(本文在发布后更新,加入了 Microsoft 的回应。)