新型 Shai-Hulud 攻击在 19 个科学类 PyPI 包中植入后门
- 浏览次数 83
- 喜欢 0
黑客在 PyPI 上入侵了 19 个软件包,这些包累计下载量达数十万次。这是一次新的 Shai-Hulud 供应链攻击,旨在分发窃取开发者机密的恶意软件。
许多受感染的包是流行的生物信息学工具,例如 Dynamo、Spateo、CoolBox、U-FISH 和 Napari-UFISH。
应用安全公司 Socket 发现了此次新活动,该活动涉及 19 个包的 37 个恶意发布版本,这些包似乎来自同一个维护者。
研究人员表示,恶意文件包括一个 *-setup.pth 文件和一个名为 _index.js 的混淆 JavaScript 载荷。
用户只需启动 Python 即可触发 PTH 文件的执行,该文件随后会尝试从 GitHub 下载 Bun JavaScript 运行时来运行捆绑的脚本。
Socket 解释道:“这意味着被入侵的 wheel 包可以将原本被动的依赖安装转化为延迟执行触发器:下一次启动 Python 的 Python、pip、测试运行、notebook 内核、CI 作业或包管理命令都可能会处理恶意的 .pth 文件。”
研究人员认为,由于该恶意软件在使用的技术上有多个相似之处,此次攻击属于更广泛的“Shai-Hulud”活动的一部分。
因此,Socket 将其与之前的攻击一起进行追踪,目前归因于 Shai-Hulud 活动的恶意文件列表已显示有 453 个项目。
对 JavaScript 载荷的分析显示,其针对范围广泛的开发者机密,包括以下内容:
- GitHub tokens 和 GitHub Actions secrets
- npm、PyPI、RubyGems、JFrog 发布 tokens
- AWS、GCP、Azure、Kubernetes 和 Vault 凭据
- SSH keys
- Docker credentials
.env、.npmrc、.pypirc- Shell 历史记录
- Claude/MCP 配置文件
- 其他开发者工作站和 CI/CD 机密
与其他 Shai-Hulud 攻击一样,其目标似乎是破坏软件开发工作流以进一步传播恶意软件。
主要的数据外泄方法与过去的 Shai-Hulud 操作类似,使用自动创建的 GitHub 仓库来托管通过 GitHub Actions 写入的机密。
还存在第二种基于直接 HTTPS 的外泄方法,指向一个合法但无效的 Anthropic API 端点(api[.]anthropic[.]com/v1/api),Socket 认为这可能是用于伪装。
该恶意软件还具备一些规避机制,例如检查俄语本地化/环境,以及检测 StepSecurity Harden-Runner 等安全工具。
持久化通过 Linux 上的 systemd 服务和 macOS 上的 LaunchAgents 建立,同时也使用了 GitHub workflow 和 Claude/MCP 配置文件。
Socket 的报告列出了所有受影响的包和版本,并建议已安装这些包的组织轮换所有机密,并从安全备份中恢复环境。
防御者应查找包含可执行 .pth 启动钩子的 Python 包、从 GitHub 意外下载 Bun JavaScript 运行时的情况,以及 Python 启动 Bun 以执行 _index.js 的进程链。