一名研究人员指出,GitHub浏览器版VSCode编辑器存在一个安全漏洞,在特定情况下可能导致开发者的Token被窃取。
该漏洞由安全研究员Ammar Askar在其博客中披露,微软已对此进行了修复。然而,此事件不仅引发了对DevOps安全性的深层思考,也让外界关注到研究人员的一项指控——他认为微软对漏洞发现并不重视,因此他只提前极短时间通知对方便公开发布了漏洞详情。
漏洞详情
github.com的用户或许并未意识到,当他们浏览任意代码仓库时,只需修改URL中的域名,即可切换至github.dev,进入浏览器版VSCode编辑环境。
Askar在博客中解释,浏览器版VSCode功能相当强大:"你可以查看仓库中的所有文件(即使是私有仓库),还可以发起Pull Request,甚至直接提交代码。"
IT咨询公司Enderle Group负责人Rob Enderle也认为,这种方式"是处理快速任务的极佳工具"。他表示:"只需在任意GitHub仓库中按下'.'键,就能立即获得一个浏览器版VS Code界面,无需在本地克隆数据。这非常适合快速审查PR、编辑文档或随时浏览代码,且不会打断工作流程。不过需要注意的是,它完全运行在浏览器沙盒中,没有计算后端,没有终端,也无法执行代码。"
他补充说,对于需要大量计算或实际编译的任务,开发者仍需借助本地工作站的原始算力,或使用Codespaces等完整云端环境。
Token泄露风险
Askar指出,上述功能的实现方式是:github.com通过POST请求向github.dev发送一个OAuth Token,允许后者代表用户与GitHub进行交互。"该Token并未限定在你所访问的特定仓库范围内,这意味着它可以完全访问你有权限的所有其他仓库。"他在博客中写道。
"这个Token的存在,加上该Web应用几乎运行了VSCode全部百万行TypeScript代码库,使其成为那些专门寻找VSCode漏洞的攻击者的绝佳目标。"他写道。
Askar表示,攻击者可以利用Jupyter Notebook在代码仓库中安装恶意扩展。Jupyter Notebook是一种用于创建和共享计算文档的Web应用,它能够安装恶意的本地工作区扩展,同时绕过发布者信任检查。在其概念验证中,Askar说明了一旦恶意载荷运行,新安装的扩展将获取GitHub API Token,查询开发者有权访问的私有仓库,并输出查询结果和Token内容。
Askar还指出,该漏洞同样存在于桌面版VSCode中,但利用难度更高——攻击者需要诱导受害者克隆其仓库,并打开包含WebView脚本载荷的Notebook文件。他补充道:"当然,如果你(攻击者)能在某个WebView中触发XSS(跨站脚本攻击),并让受害者打开它,就能实现对其计算机的完全远程代码执行(RCE)。"
他在邮件中表示,该漏洞"严重程度极高。互联网上的任何网站都可能将用户重定向至一个github.dev链接,从而让攻击者获得读取和修改代码仓库的Token。如果有人能说服某个热门软件项目的维护者点击一个链接,就可以对其项目进行任意修改。"
对此,Enderle表示:"我们必须开始以严格、隔离、零信任的方式对待开发者终端,因为我们显然不能依赖供应商的自满来保护自身安全。"
GitGuardian首席开发者倡导者Dwayne McDaniel也补充说,这一事件再次提醒我们:除非确切知道链接的目的地,否则绝不要轻易点击任何链接。
漏洞披露引发的伦理争议
然而,事情并不止于此。由于此前向微软披露VSCode漏洞时曾有过不愉快的经历(漏洞被修复,但Askar未获得任何致谢),这一次他只提前一小时通知GitHub便公开发布了该漏洞。微软随即采取了Askar所称的"临时修复"措施——在开发者于Web版VSCode中打开Notebook时增加确认提示,并禁止通过命令绕过受信任发布者要求。
这引发了一个伦理问题:安全研究人员在公开披露漏洞之前,应提前多久通知供应商?
目前,业界大多数信息安全专家普遍认同,必须提前给予通知,否则攻击者可能迅速利用漏洞。此外,若通知时间过短,研究人员自身的声誉也可能受损。经验丰富的研究人员通常会给供应商至少30天的时间来制作和发布补丁。
供应商方面,通常会设立漏洞奖励计划,或与相关平台合作,以奖励研究人员的工作。然而,部分供应商并不总是给予研究人员应有的致谢,或会刻意淡化漏洞可能造成的危害。事实上,上个月微软与一位知名网络安全研究人员就曾因类似事件公开交锋。
对于Askar最新披露的漏洞,微软发言人表示:"我们高度重视安全研究社区在加强我们产品、服务及更广泛技术生态系统安全方面所发挥的关键作用。尽管独立研究人员有权自行决定何时、以何种方式发布其研究成果,但我们始终致力于快速评估所报告的问题,调动相应的工程和安全响应资源,并尽快提供缓解措施、指导和防护手段,以帮助保障客户安全。"
该发言人还补充说,Askar所报告的问题"已针对我们的服务完成了缓解处理,客户无需采取任何行动。"
协调披露与完全公开之间存在一种平衡,Askar告诉我们。但他同时指出,双方之间存在权力不对等的问题:"安全研究人员可能在某个漏洞上投入大量时间,精心开发概念验证,并提供完整的复现步骤。他们希望至少能获得对其付出的肯定,以此积累自己的安全研究记录,或者在最理想的情况下,获得一定的漏洞奖励。"
然而,他进一步表示:"如果供应商不履行其应尽的义务,公开披露便成为安全研究人员为数不多的选择之一(前提是他们不想将漏洞束之高阁,或在黑市上出售)。这迫使供应商公开承认安全问题,通常也比任何私下沟通更能推动问题的迅速解决。"
对此,Enderle指出,这给企业带来了严峻挑战:"当供应商的官僚体系惩罚负责任的漏洞披露行为时,就会疏远整个安全社区,迫使研究人员公开发布零日漏洞,最终让企业客户承担所有后果。"
Q&A
Q1:GitHub浏览器版VSCode的Token泄露漏洞是如何运作的?
A:当用户访问github.dev时,github.com会通过POST请求发送一个OAuth Token给浏览器版VSCode。该Token并不限于特定仓库,而是拥有访问用户所有仓库的权限。攻击者可通过在仓库中植入含有恶意载荷的Jupyter Notebook文件,绕过发布者信任检查安装恶意扩展,从而窃取该Token,进而读取或修改用户的所有私有代码仓库。
Q2:微软对这个VSCode漏洞采取了哪些修复措施?
A:微软采取了临时修复措施,包括在开发者于Web版VSCode中打开Notebook时增加确认提示,并禁止通过命令绕过受信任发布者的要求。微软发言人表示,该问题已针对相关服务完成缓解处理,用户无需采取任何额外操作。
Q3:安全研究人员在公开漏洞前应该提前多久通知厂商?
A:业界普遍认为,安全研究人员在公开漏洞前应给予供应商足够的响应时间,经验丰富的研究人员通常会提供至少30天的修复窗口期。然而,Askar此次仅提前一小时通知GitHub,原因是此前向微软披露漏洞时未获应有致谢。这一做法引发了有关漏洞披露伦理与权力平衡的争议。
好文章,需要你的鼓励
今天讲的出海案例是深圳的精品纸包装龙头裕同科技,把工厂开到墨西哥瓜达拉哈拉,紧贴着北美的服务器与AI硬件客户做本地化交付。
英伟达推出OmniDreams,一个基于Cosmos扩散模型微调的自动驾驶生成式世界模型,可实时生成逼真驾驶视频,支持极端天气等长尾场景的闭环仿真测试。
Google于今年4月推出了Gemini Mac专属应用,但两个月后来看,该应用存在明显不足。作者更倾向于使用Safari的"添加到Dock"功能来运行Gemini网页版,原因包括:支持Command+N快速开启多个聊天窗口、部分对话线程在Mac应用中无法正常使用,以及Mac应用存在图标显示问题。更严重的是,Gemini Mac应用会在用户不知情的情况下安装后台程序,且被删除后还会自动恢复,引发用户强烈不满。
谷歌研究院与康奈尔大学联合提出"Sleep"框架,受人类睡眠启发,通过记忆巩固与做梦两阶段让AI大模型持续学习、抵抗遗忘并自我提升。