研究人员不满微软安全团队的做法 公开爆出VS Code漏洞可窃取私有凭证

2026-06-04 10:30:15 1 300

VS Code 高危漏洞,该漏洞可以用来窃取 GitHub OAuth Token,后者可以用来读取开发者的仓库包括私有库。为什么公开爆出漏洞呢?因为研究员此前通报漏洞遭到不公平待遇,MSRC 的做法包括无声修复、无致谢、严重性评估过低等,所以直接公开漏洞表达自己的不满。

安全研究员 Ammar Askar 在其个人博客中披露微软开源代码编辑器 Visual Studio Code 中的高危安全漏洞,攻击者只需要诱导用户点击特制链接就可以通过 GitHub 的在线编辑器窃取用户的 GitHub OAuth 凭证,该凭证拥有对用户所有仓库 (包括私有仓库) 的读写权限,因此如果凭证被窃取后可能会造成供应链攻击。

值得注意的是由于安全研究员不满微软安全响应中心提交漏洞的做法 (无声修复 / 无致谢 / 严重性评估过低),因此直接公开披露漏洞,这名安全研究员在公开发布漏洞前 1 个小时向 VS Code 团队报告漏洞,当然如此短的时间肯定没法修复,所以这种披露行为也引起社区成员的争议。



漏洞情况如下:

漏洞的核心原理是 GitHub 提供 github.dev 服务,用户可以将 github.com 替换为 github.dev 并直接在浏览器中启动轻量版 VS Code 编辑仓库。该功能本身通过 OAuth Token 授权浏览器版 VS Code 操作 GitHub API,并且 Token 作用域并未限制在单个仓库,而是可以访问用户的所有仓库。

GitHub 的 WebView (用于 MD 预览、Jupyter Notebook 等) 采用 iframe 沙箱隔离,但安全研究员发现 WebView 与主窗口通过 postMessage 通信时存在设计缺陷,WebView 可以模拟键盘事件绕过跨域限制,攻击者可以通过构造恶意 Jupyter Notebook,利用扩展推荐机制结合本地工作区扩展自动安装恶意扩展,恶意扩展最终可以窃取 GitHub Token。

整个攻击链仅需 1 次点击不需要用户进行额外交互,安全研究员还公开概念验证代码,用户只需要访问特定的 Notebook 链接后恶意代码就会自动运行,随后弹出 Token 和私有仓库列表。安全研究员强调 VS Code 桌面版也存在该漏洞,不过后面 VS Code 开发团队称桌面版不受该漏洞影响。

微软承认漏洞并发布修复版本:

收到漏洞通报后 VS Code 开发团队迅速检查并确认漏洞,开发团队在后续的 PR 中表示,这个修复 PR 在无服务器 Web 会话中打开 Notebook 时添加安全确认,不再接受任意调用者提供的安装上下文来强化命令,同时工作区首选项也提供不再询问选项,由开发者自行选择 (默认情况下需要用户确认安装扩展)。

之后开发团队发布 v1.124.0 版修复漏洞,因此使用 VS Code 的用户请尽快升级到最新版本,以免接下来会有攻击者利用这个漏洞通过钓鱼网站或电子邮件进行攻击。

关于作者

sasser91篇文章275篇回复

评论1次

要评论?请先  登录  或  注册
  • 1楼
    前天 10:30

    这波能理解研究员的心情,但1小时通知就公开确实激进了点。

    微软安全响应那边压低严重性、不给致谢这种操作确实恶心人,这毛病不是一天两天了。不过VS Code这种装机量这么大的工具,公开PoC等于给钓鱼攻击送弹药,普通人根本不会追着看安全通告。

    攻击链本身不算太复杂:点击链接 → 打开恶意Notebook → 利用扩展推荐机制自动装恶意扩展 → 顺手就把OAuth Token抽走了。关键是github.dev的Token权限没做仓库级别隔离,拿到就是全仓读写权限。

    建议就一条:现在立刻把VS Code升到v1.124.0+,用github.dev在线编辑仓库的尤其要注意,陌生链接别随便点开。

    至于微软那边的做法...下次再敢玩沉默修复那套,估计还会有第二第三个研究员选择硬刚。