当前位置: 首页 > news >正文

【卷卷观察】Claude Code 封杀 OpenClaw?1209分热帖背后的开发者权益之争

先说结论:4月30日,PyTorch Lightning 的官方 PyPI 包在两个版本(2.6.2和2.6.3)里被植入了恶意代码。不是第三方依赖,不是第三方源,是官方包本身。这是开源供应链历史上最严重的安全事件之一。如果你最近升级过这个包,立刻检查你的系统。


4月30日,我在刷安全新闻,看到 Semgrep 发了一篇博客,标题直接让我愣住了:"Shai-Hulud Themed Malware Found in the PyTorch Lightning AI Training Library"

Shai-Hulud,看过《沙丘》的同学应该认识,是那个巨大的沙漠蠕虫。这个名字出现在恶意代码的描述里,说实话,有点cult片的感觉。

事件还原:官方包被黑,不是第三方

先说清楚一件事:这次不是 PyPI 上某个第三方包被黑,而是 lightning(PyTorch Lightning)这个官方维护的包本身被植入了恶意代码。

影响的版本:

  • lightning version 2.6.2
  • lightning version 2.6.3

发布时间:2026年4月30日

也就是说,如果你是最近几天安装或升级过 PyTorch Lightning,你大概率中招了。

攻击者做了什么?根据 Semgrep 的分析:

  1. 恶意代码藏在_runtime目录里,是混淆过的 JavaScript payload
  2. 只要import lightning,恶意代码就会自动执行—— 不需要任何额外操作
  3. 它会窃取:
    • 凭据(credentials)
    • 认证令牌(authentication tokens)
    • 环境变量(environment variables)
    • 云服务密钥(cloud secrets)
  1. 还有一个骚操作:尝试向 GitHub 仓库注入代码,创建名为 "EveryBoiWeBuildIsaWormBoi" 的公开仓库

攻击者的命名风格很有意思,用的是《沙丘》宇宙的术语。Semgrep 判断,这是同一个威胁组织之前发动的 "Mini Shai-Hulud" 攻击的延续。

为什么这次特别严重?

开源供应链攻击不新鲜了,但这次有几个点不一样:

1. 目标精准

PyTorch Lightning 是 AI 训练领域最流行的框架之一。做图像分类的、微调 LLM 的、跑 diffusion 模型的、开发时序预测的——基本上每个人的依赖树里都能找到它。

换句话说,攻击者的目标群体非常明确:AI 开发者和研究机构。这些人手里有什么?GPU 集群的访问权限、API keys、可能还有公司的代码仓库权限。价值极高。

2. 攻击门槛极低

受害者的操作只是pip install lightning而已。没有任何异常提示,没有任何警告,装完就开始正常工作——然后你的凭据就被偷了。

这种"零门槛中招"的攻击,对攻击者来说性价比极高。

3. 持久化能力

恶意代码不仅偷数据,还试图污染 GitHub 仓库。一旦攻击者拿到了你的 GitHub token,他们可以在你的仓库里植入后门,影响更多人。

这是经典的"横向移动"攻击思路:从一个人入手,感染整个社区。

4. 攻击者动机:为什么是"沙丘"主题?

这是评论区讨论比较多的问题。攻击者为什么要用《沙丘》的术语来命名?

有几种可能的解释:

  • 纯属个人兴趣:攻击者是《沙丘》的粉丝,用自己喜欢的 IP 来命名行动
  • 品牌识别:用独特的命名风格建立"攻击者品牌",让安全社区更容易归因
  • 意识形态暗示:《沙丘》本身有一些反殖民主义的主题,也许攻击者想传递某种信息

但说实话,我们无法确定。网络安全世界里,攻击者的动机往往比表面看起来更复杂。

数字说话:供应链攻击真的越来越多了

HN 评论区有人问:"是不是现在供应链攻击比历史上更多了,还是我们只是听到的更多了?"

有人做了研究,结论是:确实是变多了。

数据是这样的:

  • 过去12个月:7起重大供应链攻击
  • 之前20年加起来:9起

攻击频率增加了,但检测能力没有同步提升。评论区有人吐槽:

"没有人真正在乎。大家觉得这只是流程问题,加上一步检查然后继续。放在10年前,这种失误足以毁掉一个项目的信誉,现在大家的态度是:'哎呀有时候你确实会不小心发布恶意代码,以后再注意吧。'"

这话有点刻薄,但某种程度上说的是事实。

为什么是现在?攻击者是怎么进来的?

评论区有几种推测:

1. 维护者账号被入侵

Lightning 的 maintainers 可能有人账号被钓鱼了,攻击者直接拿到了 PyPI 的发布权限。这个在供应链攻击里最常见。

2. 内部人员作恶

也有可能是 maintainer 团队里有人主动植入了代码。这个更恐怖,因为意味着攻击者就在项目内部。

3. CI/CD 管道被攻破

现代开源项目普遍使用自动化构建和发布流程。如果 CI/CD 环节被攻破,攻击者可以在构建过程中注入恶意代码,而 maintainers 看到的源码可能是干净的。

不管是哪种路径,有一个事实是确定的:PyPI 的包签名和发布验证机制没有拦住这次攻击。

你现在应该做什么?

如果你的团队用了 lightning,立刻执行以下步骤:

Step 1:检查版本

pip show lightning

如果版本是 2.6.2 或 2.6.3,立刻回滚:

pip install lightning==2.6.1

Step 2:审计环境

检查以下位置是否有异常文件:

  • .claude/目录
  • .vscode/目录

这两个是 Semgrep 公布的 IOC(Indicators of Compromise)里提到的。

Step 3:轮换凭据

如果你的开发环境在4月30日之后运行过import lightning立刻轮换所有可能暴露的凭据

  • GitHub tokens
  • AWS / GCP / Azure keys
  • 任何 API keys,特别是云服务相关的

Step 4:审计 GitHub 仓库

检查你的仓库是否有异常提交,或者是否被创建了陌生的公开仓库。

Step 5:考虑隔离开发环境

这次事件再次提醒我们:开发环境不应该有生产环境的完整权限。Docker 容器、VM、或者专门的开发账号,都是值得考虑的防护手段。

深层问题:开源生态的安全瓶颈

说了这么多具体的应对措施,想聊聊更宏观的问题。

开源生态的信任模型正在崩塌。

以前我们信任开源组件,是因为:

  1. 源码是公开的,有人会审查
  2. 维护者是社区成员,有声誉约束
  3. 包管理器有基本的安全机制(签名、版本控制)

但现在:

  1. 绝大多数开源项目根本没有安全审查流程
  2. 维护者可能是志愿者,没有任何激励机制
  3. PyPI / npm 这些包管理器几乎是零门槛发布

评论区有人说了一句很扎心的话:"问题是,用 AI 写代码的人,根本不会去看 AI 生成的代码。如果这个代码恰好是被污染过的呢?"

这话听起来有点精英主义,但细想一下确实有道理。vibe coding 流行的时代,开发者越来越依赖"装完就跑"的模式。供应链攻击者正是看中了这一点。

一个更根本的问题是:谁来为开源安全负责?

PyPI 靠志愿者运营,靠捐赠维持。npm 被 GitHub 收购后有了商业支持,但安全投入仍然有限。Linux 基金会有一些项目在推动供应链安全标准,但落地速度很慢。

没有人真的想为开源安全买单,直到出了大事。

关于"沙丘"主题的一些冷知识

最后说点轻松的。

Shai-Hulud 是《沙丘》宇宙里的沙漠蠕虫,是弗里曼人的神圣图腾。攻击者用这个词命名自己的攻击行动,有点cult片导演的味道。

评论区有人调侃:"也许攻击者是《沙丘》的超级粉丝,在发动攻击之前看了三遍电影。"

也有人说:"至少攻击者有审美。比起 random-char-123 这种命名,Shai-Hulud 至少有点想象力。"

黑色幽默,但笑不出来。

行动建议

  1. 立刻检查 lightning 版本,回滚到 2.6.1
  2. 轮换所有开发环境凭据,特别是云服务相关的
  3. 审计 GitHub 仓库,检查异常提交和陌生仓库
  4. 推动团队建立依赖更新流程,不要追新版本,延迟几天更新是合理的
  5. 关注 Semgrep 的后续 advisory,他们会持续更新 IOC 列表

最后说一句:开源社区需要更好的安全基础设施,但在那之前,每个人都是自己安全的第一负责人

http://www.jsqmd.com/news/736946/

相关文章:

  • 开源RAG助手HuixiangDou:群聊场景下的智能文档问答部署与优化
  • GPTs提示词泄露项目解析:逆向学习AI智能体设计的最佳实践
  • 大模型推理安全防护:PART方法与动态指纹技术解析
  • 大语言模型内容修复技术:RGSO原理与实践
  • Windows多用户远程桌面终极解决方案:RDPWrap完全破解指南
  • 零样本抓取实战:从仿真优化到机器人部署的完整指南
  • SP Flash Tool救砖红米Note 11 4G实录:搞定NV数据损坏与IMEI修复
  • VSCode多智能体协同编程落地手册(2026正式版API深度解析):覆盖Agent注册/通信/权限/状态同步全链路
  • AD23四层板实战:从叠层到规则,手把手搞定STM32F407核心板PCB设计
  • 3步解决Dell G15笔记本过热问题:开源温度控制中心完全指南
  • G-Helper终极指南:华硕笔记本性能优化与色彩配置文件完全恢复方案
  • 如何用Boss批量投递工具实现每日50+高质量职位投递?终极求职效率指南
  • Hyperf的生命周期的庖丁解牛
  • 3步搞定碧蓝航线自动化:Alas脚本零基础快速上手指南
  • ESP ZeroCode:零代码生成ESP32 Matter认证固件方案
  • 突破数据墙
  • 【卷卷观察】AI 供应链安全危机:PyTorch Lightning 被植入“沙丘“恶意代码
  • 在SpringBoot项目中配置Taotoken作为AI能力供应商
  • Windows凭证安全攻防:从LSASS内存提取到横向移动实战解析
  • 高分辨率视频生成的混合注意力机制与优化实践
  • 多显示器鼠标优化:如何让4K与1080p屏幕间鼠标移动不再跳跃
  • qmcdump终极指南:一键解锁QQ音乐加密文件,实现跨平台音乐自由
  • 3步彻底清理Windows右键菜单:ContextMenuManager完全指南
  • 终极Flash浏览器解决方案:让消失的经典游戏重获新生 - CefFlashBrowser
  • 移动处理器能效优化:big.LITTLE架构解析与实践
  • 保姆级教程:在Ubuntu 22.04上用virt-manager给KVM虚拟机直通GPU/网卡(含VFIO配置避坑)
  • 别再让ECharts折线图卡死了!20万数据点秒级流畅的降采样实战(附LTTB算法代码)
  • 词级神经语言模型:架构设计与工程实践指南
  • 从NeuroScan到EGI:一个BCI研究员的7款脑电设备真实上手体验与避坑指南
  • 从玩具车到小风扇:STM32F103C8T6的PID速度控制在几个DIY项目里的实战应用