2026年5月18日,一个普通的周一。
GitHub的一名员工,像往常一样打开VS Code,安装了一个看起来完全正常的扩展插件。也许是Nx Console,也许是某个工具类插件,这不重要,重要的是,这个插件被投毒了。
然后,3800个内部仓库被打包带走。
你敢信吗?全球最大的代码托管平台,服务超过两亿开发者,号称最安全的"数字代码银行",结果因为一个员工装了一个插件,内部代码库被整个端走。
说真的,这太荒诞了。
事件回顾:从插件到泄露的72小时
先捋一下时间线。
5月18日,员工设备感染恶意VS Code扩展。插件在后台悄悄运行,收集敏感信息,访问内部仓库。
5月20日,GitHub官方发布安全公告,确认"未经授权的访问"。这时候距离入侵已经过去了两天。
5月22日,细节逐渐浮出水面。黑客组织TeamPCP开始在挂牌出售这些代码。
整个过程,就像一场精心编排的魔术。你盯着舞台中央的华丽表演,却没人注意到后台的门已经被悄悄打开。
最讽刺的是什么?
GitHub自己就是做代码安全的,结果被一个VS Code插件给破了防。而且Github和VS Code都是微软自己的软件,算是自己打了自己的脸了。这也让人觉得即使是微软的技术人,有时候也和普通程序员没啥差别。

这就好比银行的金库安保严密,结果劫匪从保洁员的钥匙扣上复制了一把万能钥匙。
供应链攻击
这次攻击的本质,是典型的供应链投毒。
攻击链条拆解
1. 制作恶意VS Code扩展
↓
2. 上传到官方市场(或伪装成合法扩展)
↓
3. GitHub员工安装
↓
4. 插件在后台执行恶意代码
↓
5. 窃取凭证、访问内部仓库
↓
6. 批量下载3800个仓库
↓
7. 出售
看着简单对吧,但每一步都踩在了现代软件开发的软肋上。
为什么VS Code扩展这么危险
想想你每天用的VS Code。
你装了多少个扩展?十个,二十个。
每个扩展都有权限做什么。
• 读取你的文件系统 • 访问网络 • 执行任意代码 • 甚至可能访问你的环境变量和SSH密钥
而你对这些扩展的信任,几乎是无条件的。因为它们来自"官方市场",因为它们是"知名作者"发布的,因为"大家都在用"。
这就是问题所在。只有你信任的人才能利用你的信任。
我们建立了一套基于信任的体系,却没有相应的验证机制。
Nx Console的前车之鉴
有意思的是,安全社区注意到,近期Nx Console扩展也遭受了类似攻击。
这不是巧合。
攻击者发现了一条高效的路径:与其花几个月时间破解加密、寻找零日漏洞,不如直接让受害者自己把门打开。
而你,会心甘情愿地点击"安装"按钮。
如果爱因斯坦还活着,他会怎么看这件事。
我想他会想起那个著名的思想实验:如果你以光速追逐一束光,你会看到什么。
在安全领域,也有类似的悖论。
你越是追求便利,就越是牺牲安全。你越是构建复杂的系统,就越是创造更多的攻击面。
GitHub的安全团队肯定不傻。他们有最先进的入侵检测系统,有严格的访问控制,有完善的审计日志。
但他们忽略了一个最基本的事实。
最坚固的堡垒,往往从内部被攻破。
这不是技术问题,这是人性问题。
员工需要高效工作,所以要安装各种工具。工具需要权限,所以必须给予信任。信任一旦被滥用,整个体系就会崩塌。
在安全领域,信任和风险也是相对的。你认为安全的,可能恰恰是最危险的。
3800个仓库意味着什么
让我们量化一下这次泄露的规模。
3800个内部仓库。
假设每个仓库平均有100次提交,每次提交平均修改10个文件,每个文件平均500行代码。
那就是 1.9亿行代码 被泄露。
这还只是保守估计。
更可怕的是,这些不是公开代码,是内部代码。
里面有什么。
• 未公开的API设计 • 内部架构文档 • 代码审查记录 • 安全漏洞的修复历史
对攻击者来说,这简直是一座金矿。
他们可以:
• 寻找尚未修复的漏洞 • 理解GitHub的内部架构 • 模仿GitHub的功能 • 甚至可能找到其他用户的敏感信息
TeamPCP开价5万美元,说实话,太便宜了。
这些数据在别有用心的老板那里的价值,远不止这个数。
GitHub的应对
平心而论,GitHub这样的顶级公司的反应速度不算慢。
• 发现入侵后立即隔离了受感染的设备 • 轮转了所有关键密钥和凭证 • 发布了透明的安全公告 • 确认客户数据未受影响
这些都是正确的做法。
但问题是,这一切都是事后的。
入侵发生在5月18日,公告在5月20日才发布。中间隔了两天。
这两天里,攻击者已经在从容地打包数据,准备出售。
这就是被动防御的局限性。
你再快的响应,也快不过已经发生的泄露。
这件事给我最大的触动,不是技术层面的,而是哲学层面的。
我们生活在一个建立在信任之上的数字世界。
你信任VS Code市场不会分发恶意插件。
你信任npm包不会包含后门。
你信任CI/CD管道是安全的。
但这种信任,有验证过吗?
大多数时候,没有。
我们只是在赌,赌这些系统不会被攻破,赌这些作者不会作恶,赌这些依赖没有被投毒。
而这一次,GitHub赌输了。
爱因斯坦说过一句话。
"疯狂就是重复做同样的事情,却期待不同的结果。"
我们在软件开发中,是不是也在重复这种疯狂。
每次有新工具出现,我们就毫不犹豫地采用。
每次有新的依赖需要安装,我们就闭着眼睛接受。
每次有安全警告弹出,我们就选择忽略。
然后我们期待系统会是安全的。
这可能吗。
这次事件不是孤例。
• 2021年,Codecov遭入侵,CI/CD脚本被篡改 • 2022年,Log4j漏洞震惊全球 • 2023年,3CX桌面应用供应链攻击 • 2024年,XZ Utils后门事件 • 2026年,GitHub VS Code扩展投毒
模式都一样。
攻击者不再正面强攻,而是寻找信任链中最薄弱的一环。
可能是某个小众的npm包。
可能是某个不再维护的开源项目。
可能是一个看似无害的VS Code扩展。
而你,会成为那个不知情的帮凶。
写在最后
信任不是免费的,它需要持续的验证、审计和警惕。
GitHub这次付出了代价,希望整个行业能从中吸取教训。
否则,下一次,可能就是我们自己。
夜雨聆风