VSCode漏洞:点击链接即可窃取GitHub Token
VSCode 漏洞:点击一个链接就可能被盗走 GitHub Token
安全研究者 Ammar Askar 于 6 月 2 日披露了一个影响 VSCode(包括 github.dev 网页版和桌面版)的安全漏洞。攻击者只需诱导用户点击一个恶意链接,就能窃取其 GitHub OAuth Token,进而访问用户有权限的所有仓库——包括私有仓库。

漏洞原理
漏洞的核心在于 VSCode 的 Webview 键盘事件转发机制。
VSCode 使用 iframe 隔离不受信任的内容(如 Markdown 预览、Jupyter Notebook),但为了让用户在 Webview 内也能使用快捷键,VSCode 注册了一个 did-keydown 事件监听器,将 Webview 内的所有键盘事件通过 postMessage 转发给主窗口。
问题在于:Webview 中的恶意脚本可以伪造键盘事件。由于事件处理没有验证来源,伪造的按键事件会被主窗口当作真实用户输入处理。
攻击链
完整的攻击链如下:
- 诱导点击:用户点击一个指向 github.dev 的恶意链接(内含一个 Jupyter Notebook,Notebook 中嵌入了恶意 JavaScript)
- 等待 VSCode 推荐扩展通知:VSCode 自动弹出"是否安装推荐扩展"的通知
- 伪造快捷键接受通知:恶意脚本发送
Ctrl+Shift+A键盘事件,自动点击"安装" - 安装本地恶意扩展:攻击者在
.vscode/extensions/目录预置了一个扩展,注册了自定义快捷键Ctrl+F1,绑定到workbench.extensions.installExtension并跳过发布者信任检查 - 触发扩展安装:脚本发送
Ctrl+F1,从 Marketplace 安装攻击者指定的扩展 - 窃取 Token:安装的扩展读取 GitHub OAuth Token,调用
api.github.com/user/repos获取用户的私有仓库列表
整个过程无需用户任何额外操作,只需初始的一次点击。
影响范围
- github.dev(网页版):最高危。只要用户曾经使用过 github.dev 且未清除浏览器 localStorage,任何网页链接都可以将用户重定向到攻击页面,且 github.dev 没有 CSRF Token 保护
- VSCode 桌面版:同样存在,但利用门槛更高——需要用户克隆攻击者的仓库并在桌面版中打开含恶意脚本的 Notebook。一旦成功利用,由于 VSCode 扩展可以调用 Node.js API(包括
child_process),等同于远程代码执行
关键风险点
- GitHub 传给 github.dev 的 OAuth Token 不限于当前仓库,而是拥有用户所有仓库的完整权限
- github.dev 没有 CSRF Token,任何外部链接都可以直接将用户带入攻击
- 桌面版如果被利用,后果更严重——不仅是 Token 泄露,而是完整的 RCE
防护建议
- 清除 github.dev 站点数据:在浏览器设置中删除 github.dev 的 localStorage 和 cookies。清除后,再次访问 github.dev 会重新弹出权限确认对话框
- 检查已安装扩展:如果怀疑曾访问过 PoC 页面,检查并卸载可疑扩展
- 关注补丁更新:该漏洞于 6 月 2 日通过完全披露(full disclosure)方式公开,研究者称此前曾联系 GitHub 安全团队但选择了公开披露
值得注意的是,这是在 5 月 20 日 GitHub 披露 VSCode Marketplace 恶意扩展窃取约 3,800 个私有仓库事件之后的又一个 VSCode 安全问题,开发者工具供应链安全值得持续关注。
相关推荐
- 苹果警告:iOS 13/14 用户需立即升级至 iOS 153/20/2026
- DarkSword 被披露:Safari 打开恶意网页即可被入侵,旧版 iPhone 该升级了3/19/2026
- 苹果锁定模式近四年零攻破记录3/28/2026
- 装个App等24小时:Google给Android侧载上了把锁3/20/2026
- Google公布Android侧载新规:安装未验证应用须等24小时3/20/2026
- 有人在 GitHub 上开源了一个「前任 Skill」3/31/2026
- 白宫官方 App 逆向拆解:付费墙绕过、休眠定位追踪与供应链风险3/28/2026
- Android 17 后量子加密落地:系统可信根的量子抗性升级3/26/2026
- GrapheneOS 拒绝把操作系统做成身份核验入口3/24/2026
- ShinyHunters 入侵 Rockstar Games,通过第三方工具窃取 Snowflake 数据4/14/2026
- 谷歌推出 DBSC 技术:通过设备绑定强化 Cookie 安全防护4/11/2026
- Vercel 确认安全事件,暗网卖家声称掌握核心访问权限4/19/2026
- OpenAI 开始给内部编码代理配“监工”,数千万轨迹里未见最高风险失调3/21/2026
- LLM 供应链安全警钟:超 20% 免费 API 路由器存在恶意行为4/10/2026
- Apifox 桌面端被曝遭供应链投毒,恶意脚本可窃取 SSH 密钥与 Git 凭证3/25/2026
- ICAO 紧急限制航班充电宝:每人最多 2 个,机上禁充3/28/2026
- Apifox 承认遭遇供应链攻击后,开发团队现在最该做的是全面轮替凭证3/26/2026
- Claude 曝出「身份混淆」缺陷:AI 代理误认自身推理为用户指令,触发安全风险4/10/2026
- 逆向 Claude Code 请求签名:cch 是怎么算出来的4/3/2026
- Anthropic 的终极安全模型 Mythos,上线当天就被未授权访问了4/23/2026
- 金山毒霸与 360 安全卫士内核驱动曝高危漏洞4/13/2026
- PyPI 包 lightning 遭供应链攻击,800 万月下载量的 ML 框架暴露开发者凭证5/2/2026
- 九年 Linux 高危漏洞被披露:CVE-2026-31431 "Copy Fail" 允许本地提权至 root4/30/2026
- CPU-Z 官网遭黑客入侵,部分下载包被植入恶意代码4/10/2026
- 深圳比亚迪坪山园区立体车库起火,官方称无人员伤亡4/14/2026
- Glassworm 把恶意代码藏进不可见 Unicode 字符,至少 151 个 GitHub 仓库受影响3/15/2026
- Microsoft Edge 被曝会话期间明文保存所有密码于内存5/5/2026
- GitHub Issues 遭遇大规模垃圾广告攻击,开源社区成黑产引流池3/29/2026
- Apple 修复 iOS 通知数据残留漏洞(CVE-2026-28950)4/22/2026
- Copilot 悄悄改了 PR 描述,顺便给自己打了广告3/30/2026