事件概述

GitHub 官方确认,一个恶意 VSCode 扩展程序成功入侵了 3,800 个代码仓库。该扩展通过 VSCode Marketplace 分发,安装后利用 VSCode 扩展的完全系统权限,窃取开发者机器上的 Git 凭据、API Token 和环境密钥,进而向受影响的仓库注入恶意代码。

打开网易新闻 查看精彩图片

当前状态

恶意扩展已被 GitHub 从 Marketplace 下架,受影响仓库已收到安全通知。GitHub 正在协助用户轮换泄露的凭据并清理被污染的提交。但是否已完全修复?没有。 漏洞不在某个具体扩展,而在 VSCode 扩展模型本身——扩展默认拥有与用户同等的系统权限,无沙箱隔离。

用户必须做的 4 件事:

立即检查已安装的 VSCode 扩展,卸载来源不明或非官方发布的扩展

轮换所有凭据——GitHub Token、npm Token、云服务商 API Key

检查仓库 git log,确认是否有异常提交

启用 GitHub 的 secret scanning 和 branch protection

知鹤观点:

这件事最讽刺的地方在于:VSCode 是微软的产品,而微软给 Windows 上的应用搞沙箱搞了十几年都没搞好,却让自己的 IDE 扩展以"裸奔"权限运行。

VSCode 扩展生态的根本问题是信任模型缺失——安装一个扩展等于把整个开发机器的钥匙交给一个陌生人审核的 npm 包。HN 社区讨论一针见血:浏览器里的网页代码都被沙箱隔离,而开发者工具里的扩展却能读写一切、联网外传数据。

这不是"某个坏扩展"的问题,是整个扩展权限模型的设计债务。微软如果再不引入细粒度权限系统(类似浏览器扩展的权限声明),这类事件只会越来越多。