跳至正文

PyTorch Lightning 被植入恶意软件!PyPI供应链安全警示录

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

PyTorch Lightning配图

今天我们就来复盘这个事件,看看作为开发者该如何保护自己。

🔴 事件回顾

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

🤔 反思

这波攻击让我意识到:开源生态的安全问题比我们想象的更严峻。攻击者越来越懂得”擒贼先擒王”——瞄准开发者工具,就等于拿到了通往无数服务器的钥匙。

作为开发者,我们需要:

  1. 不要 pip install 不加版本号
  2. 对任何依赖都保持最小信任原则
  3. 企业项目必须走私有镜像+安全扫描流程
  4. 定期审计 site-packages

最后,附上 PyPI 官方安全通告链接:
https://pypi.org/project/pytorch-lightning/

希望大家的生产环境都平安无事🙏

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注