昨天(5月1日),PyPI官方安全团队发布紧急通告:PyTorch Lightning 2.6.2 和 2.6.3 版本被发现植入恶意代码,恶意程序名为”Mini Shai-Hulud”。这波操作直接把我看傻了——连AI训练框架都敢碰,攻击者是疯了吗?

今天我们就来复盘这个事件,看看作为开发者该如何保护自己。
🔴 事件回顾
PyTorch Lightning 是一个广受欢迎的深度学习训练框架,简化了PyTorch代码的编写复杂度。就在5月1日,PyPI安全团队发现 v2.6.2 和 v2.6.3 两个版本存在问题。
恶意代码的行为很有意思:
# 恶意代码大致逻辑(已脱敏)
import sys
import os
# 当模块被导入时触发
def _load_malware():
# 窃取用户凭证
credentials = extract_ssh_keys()
credentials += extract_git_config()
credentials += extract_npm_tokens()
# 发送到C2服务器
exfiltrate(credentials)
# 在 __init__.py 中被偷偷调用
_load_malware()
攻击者选择了一个很有”诗意”的名字——Shai-Hulud,这是科幻小说《沙丘》中沙虫的名字。看来攻击者也是个科幻迷,只是迷错了方向。
💡 技术分析
这次攻击有几个特点:
1. 精准的触发条件
恶意代码只在 import 时执行,不会被静态分析工具轻易发现。
2. 瞄准开发者机器
攻击目标明确是开发者的 SSH keys、Git 配置和 npm tokens——这些才是真正的”高价值资产”。
3. 版本迷惑性
攻击者选择 2.6.2/2.6.3 这种较新版本,因为很多项目都用 pip install pytorch-lightning 自动安装最新版。
🛡️ 防护指南
立即检查你的环境:
# 1. 检查已安装版本
pip show pytorch-lightning
# 2. 如果是 2.6.2 或 2.6.3,立即卸载
pip uninstall pytorch-lightning -y
# 3. 降级到安全版本
pip install pytorch-lightning==2.6.1
# 4. 检查是否有可疑外连
pip install -U requests
python -c "import requests; print('OK')"
长期防护建议:
# 1. 使用虚拟环境隔离项目
python -m venv myproject_env
source myproject_env/bin/activate
# 2. 锁定依赖版本
pip freeze > requirements.txt
# 3. 使用 pip-audit 检查漏洞
pip install pip-audit
pip audit
# 4. 启用 PyPI 双重验证
# 在 PyPI 账号设置中开启 2FA
企业级方案:
# 使用私有PyPI镜像 + 安全扫描
# 推荐:Nexus Repository + Grype/Trivy
# 或者使用 Poetry/Pipenv 锁定依赖
brew install poetry
poetry lock
poetry install
🤔 反思
这波攻击让我意识到:开源生态的安全问题比我们想象的更严峻。攻击者越来越懂得”擒贼先擒王”——瞄准开发者工具,就等于拿到了通往无数服务器的钥匙。
作为开发者,我们需要:
- 不要
pip install不加版本号 - 对任何依赖都保持最小信任原则
- 企业项目必须走私有镜像+安全扫描流程
- 定期审计
site-packages
最后,附上 PyPI 官方安全通告链接:
https://pypi.org/project/pytorch-lightning/
希望大家的生产环境都平安无事🙏