对抗知识焦虑,从看懂这条开始
App 下载对抗知识焦虑,从看懂这条开始
App 下载
持久化后门|GitHub令牌|供应链攻击|lightning包|PyPI|网络安全|前沿科技
2026年4月30日,一位深度学习开发者像往常一样敲下pip install lightning——这行指令每天被全球数十万开发者执行,用来安装训练AI模型的核心框架。他不知道的是,自己正在触发一场精心策划的供应链攻击:PyPI上的lightning包2.6.2和2.6.3版本已被植入恶意代码,仅需导入模块就能激活。短短数小时内,这场攻击就从PyPI蔓延到npm生态,窃取GitHub令牌、云服务密钥,甚至悄悄篡改开发者的代码仓库。更棘手的是,攻击者还在开发工具里埋下了持久化钩子,哪怕开发者卸载了恶意包,后门依然存在。
你可以把开源软件供应链想象成一家连锁餐厅——你点的一道菜,依赖上游的蔬菜供应商、调料厂商,甚至是洗菜的小工。只要其中一个环节被动手脚,最终端到你面前的菜就可能有问题。这次的lightning攻击就是如此:攻击者先攻陷了lightning包的维护者权限,在2.6.2和2.6.3版本中偷偷加入了一个_runtime目录,里面藏着14.8MB的混淆JavaScript载荷。

当开发者导入lightning模块时,Python启动脚本会自动下载Bun JavaScript运行时——这是个比Node.js更轻巧的工具,能绕过大部分安全软件的监控——然后执行恶意载荷。整个过程没有弹窗,没有报错,开发者完全察觉不到异常。
直给的攻击链路是这样的:
这不是一次孤立的攻击,而是Shai-Hulud系列攻击的延续——这个名字来自科幻小说《沙丘》里的巨型沙虫,寓意攻击像沙虫一样潜伏、扩散。和之前只针对npm生态的版本不同,这次攻击者玩出了新花样:以PyPI为入口,再横向渗透到npm生态,形成跨语言的蠕虫传播。
当恶意代码在开发者电脑上找到有效的npm发布令牌后,会自动遍历该账号下的所有npm包,在每个包里植入preinstall钩子和恶意启动脚本,然后把包的版本号往上提一个小版本,悄悄重新发布。下游开发者更新依赖时,就会在自己的电脑上触发同样的攻击,进而感染更多包。

更狠的是持久化手段:攻击者会修改开发者常用的Claude Code和VS Code配置,在.claude/settings.json和.vscode/tasks.json里加入自动执行脚本。以后只要开发者打开这个项目文件夹,恶意代码就会自动启动,哪怕已经卸载了最初的lightning恶意包,依然摆脱不掉。
这次攻击的影响范围远超想象:lightning包月下载量高达830万次,受影响的项目数以万计。攻击者在GitHub上创建了1800多个恶意仓库,每个仓库的描述都写着"A Mini Shai-Hulud has Appeared"——像是在给受害者留下标记。
这次攻击暴露了开源软件供应链的核心脆弱性:我们默认信任上游的包维护者,默认信任自动化的CI/CD流程,却忘了信任链上的任何一个环节都可能被突破。
攻击者能成功的关键,在于拿到了lightning包维护者的发布权限——大概率是通过钓鱼攻击窃取了凭证。而一旦拿到权限,就能绕过所有代码审查,直接上传恶意包。这就像餐厅的厨师被掉包,做出来的菜再怎么美味,也可能藏着毒。
更让人不安的是AI辅助开发带来的新风险:现在很多开发者会直接复制AI生成的代码,或者安装AI推荐的包。如果攻击者提前注册了AI可能"幻觉"出来的包名,就能轻松诱骗开发者安装恶意包。2026年的Sonatype报告显示,开源恶意包数量同比增长了75%,其中很大一部分是利用AI幻觉和拼写欺骗的手段传播的。
当然,也不是没有防御手段:比如强制使用WebAuthn抗钓鱼认证,缩短令牌的有效期,关闭CI/CD里的高风险触发器,推行可重现构建和签名验证。但这些措施需要整个生态的协作,而开源项目的维护者大多是志愿者,根本没精力和资源做这些。
当我们享受开源软件带来的便利时,也在把自己的安全交到陌生人手里。这次lightning攻击不是终点,而是一个信号:攻击者已经把开源供应链当成了提款机,而且手法越来越隐蔽,越来越自动化。
我们不能再用"开源即安全"的自我安慰麻痹自己了——信任是要靠机制来保障的,不是靠善意。未来的开源生态,需要更严格的身份验证,更透明的构建流程,更自动化的安全检测。
信任链的每一环,都得是铜墙铁壁。