Hacker News 中文摘要

RSS订阅

通过VSCode漏洞一键窃取GitHub令牌 -- 1-Click GitHub Token Stealing via a VSCode Bug

文章摘要

文章披露了VSCode的一个安全漏洞,攻击者可通过诱导用户点击链接窃取GitHub令牌,从而获得对用户仓库(包括私有仓库)的读写权限。该漏洞涉及github.dev功能与VSCode Webview的安全模型问题,文章还包含漏洞详情、防护建议及完整披露时间线。

文章总结

标题:通过VSCode漏洞一键窃取GitHub令牌

核心内容概述

漏洞危害
攻击者仅需诱导用户点击恶意链接,即可窃取具备完整读写权限的GitHub令牌(包括私有仓库访问权限)。该漏洞源于Visual Studio Code(VSCode)Webview的安全模型缺陷。


技术背景

  1. github.dev功能
    GitHub提供的在线版VSCode(github.dev)通过OAuth令牌实现仓库操作,该令牌具有用户所有仓库的全局权限,成为攻击目标。

  2. VSCode Webview安全机制

    • Webview通过<iframe>实现跨域隔离,限制JavaScript执行。
    • 主窗口与Webview通过postMessage通信实现交互功能(如Markdown预览联动)。

漏洞原理

键盘事件伪造
- 安全边界突破:Webview默认将键盘事件(如keydown)转发至主窗口,以支持快捷键功能(如Ctrl+Shift+P调出命令面板)。 - 攻击利用:恶意脚本可伪造键盘事件,模拟以下操作链: 1. 触发推荐扩展安装通知(通过.vscode/extensions.json) 2. 发送Ctrl+Shift+A快捷键自动同意安装 3. 通过本地工作区扩展绕过发布者信任检查 4. 最终执行任意代码(如窃取令牌)

技术细节
- 攻击载体:Jupyter Notebook中的Markdown单元格通过<img onerror>注入JavaScript。 - 关键步骤:伪造快捷键安装恶意扩展,利用扩展API直接获取GitHub令牌。


影响范围

  • github.dev用户:点击恶意链接即中招(需用户曾登录过github.dev)。
  • 桌面版VSCode:需用户主动打开恶意仓库中的文件,风险较低但存在RCE可能。

防护措施

  1. 立即清除浏览器数据
    • 清除github.dev的Cookies和本地存储(Chrome:地址栏>网站设置>清除数据)。
  2. 临时缓解
    • 首次访问github.dev时出现的授权对话框可作为中断攻击的机会(需未保存登录状态)。

厂商响应与披露

  • 微软未积极处理:历史记录显示MSRC多次低估VSCode漏洞风险(如标记XSS为"低危")。
  • 完全披露原因:抗议微软安全响应中心对漏洞报告的漠视,推动安全修复优先级提升。
  • 时间线:漏洞于2026年6月2日公开,同步提交至VSCode GitHub仓库。

延伸思考

  • 防御深度优势:VSCode的CSP策略和DOMPurify有效限制了其他潜在攻击面。
  • 安全与体验平衡:需重新评估Webview事件转发机制的设计合理性。

(注:原文中的图片引用、代码片段及部分技术细节已简化为文字描述,保留核心逻辑链条。)

评论总结

以下是评论内容的总结,平衡呈现不同观点并保留关键引用:

  1. 对作者的赞赏

    • 肯定作者为提高VS Code安全性所做的努力
    • 关键引用:
      • "Thank you for essentially donating the time...you're still trying to help"(评论1)
      • "This is a very good writeup"(评论2)
  2. 对GitHub/VSCode安全设计的批评

    • 认为网页版VSCode与GitHub的深度集成存在安全隐患
    • 关键引用:
      • "it's a pity that the web embedded VSCode editor is signed into GitHub at all"(评论2)
      • "a huge vulnerability surface arises from that original sin"(评论2)
  3. 对MSRC(微软安全响应中心)的负面评价

    • 批评其响应流程和对待研究者的态度
    • 关键引用:
      • "Classic MSRC...they silently fixed the bug"(评论4)
      • "The MSRC situation is really unbelievable"(评论5)
  4. 技术漏洞讨论

    • 详细分析漏洞利用链和绕过方法
    • 关键引用:
      • "You cannot just use the shortcut trick...because of new publisher trust system"(评论7)
      • "the CSP only prevents the JS in local extension but nothing about its package.json"(评论7)
  5. 安全实践建议

    • 强调隔离和损害控制的重要性
    • 关键引用:
      • "best thing to do is segregate and control damage"(评论8)
      • "trust no one, nothing...your token is going to get leaked"(评论8)
  6. 替代方案推荐

    • 建议使用其他编辑器如Zed
    • 关键引用:
      • "If you like VSCode but don't like Microsoft, try Zed"(评论6)
  7. 安全事件亲身经历

    • 分享令牌被盗的亲身经历和感受
    • 关键引用:
      • "the biggest feeling is the one of feeling violated"(评论8)
      • "github token got stolen and also cloudflare tokens"(评论8)

总结呈现了从赞赏、技术分析到批评的完整观点谱系,保留了原始讨论中的核心论据和代表性语句。