供应链投毒预警 | 开源供应链投毒202403月报发布啦!(含投毒案例分析)
字数 2440 2025-08-22 12:22:48
开源供应链投毒攻击分析与防御指南
一、供应链投毒攻击概述
供应链投毒攻击是指攻击者通过向开源软件仓库(如NPM、PyPI等)上传包含恶意代码的组件包,利用开发者对这些官方仓库的信任,当开发者安装这些被污染的依赖包时,恶意代码就会被执行。
2024年3月投毒攻击统计数据
- 捕获恶意组件总数:1085个不同版本
- 仓库分布:
- NPM仓库占比:38.53%
- PyPI仓库占比:61.47%
- 攻击高峰:3月26-27日,PyPI遭遇集中式投毒攻击,攻击者连续投放近600个恶意Python组件
二、攻击方式分析
1. 主要攻击方式统计
| 攻击方式 | 占比 | 描述 |
|---|---|---|
| 恶意文件执行 | 45.44% | 利用包管理器自定义指令执行隐藏在组件中的恶意文件 |
| 代码混淆执行 | 26.61% | 使用各种混淆技术隐藏恶意代码 |
| 恶意文件远程下载执行 | 25.94% | 从攻击者服务器下载并执行恶意文件 |
| 恶意文件释放执行 | 1.09% | 释放隐藏的恶意文件并执行 |
| 直接执行恶意shell命令 | 0.92% | 直接执行系统命令进行攻击 |
2. 恶意行为统计
| 恶意行为类型 | 占比 | 目标 |
|---|---|---|
| 信息窃取攻击 | 46% | 窃取密码文件、用户信息、网络配置、系统版本、DNS服务器IP、外网IP、浏览器cookie及登录凭证等 |
| 数字钱包APP劫持 | >50% | 针对Exodus、Atomic Wallet等数字钱包应用的数据盗取和劫持 |
| 反向shell后门 | 较少 | 建立持久化后门连接 |
| 远控木马攻击 | 较少 | 远程控制受害者系统 |
三、典型投毒案例分析
案例1:系统信息外传 (salesforce-service-cloud)
- 平台:NPM
- 版本:99.99.99
- 攻击手法:依赖混淆攻击(Dependency Confusion)
- 恶意代码位置:package.json中定义的preinstall指令执行恶意index.js
- 下载量:约60次
- 恶意行为:
- 收集系统敏感信息(用户ID、用户名、主机名、DNS服务器IP等)
- 通过HTTPS POST发送到攻击者服务器(bhfvohxbvhtizkooshbfose8s0i1m2yus.oast.fun)
案例2:反向shell后门 (evilshield)
- 平台:PyPI
- 版本:0.0.2和0.0.9
- 下载量:737次
- 攻击流程:
- 组件入口
__init__.py加载执行utils.py中的NetUtils.run()函数 - 通过
subprocess.Popen()执行base64编码的反向shell代码 - 从攻击者服务器获取远控IP和端口(157.245.70.91:1338)
- 建立反向shell连接
- 组件入口
案例3:恶意木马植入 (pytimicer-c)
- 平台:PyPI
- 版本:10个不同版本
- 下载量:近2000次
- 攻击流程:
- 主模块
pytimicer_c.py中嵌入zip压缩及base64编码的恶意代码 - 从Dropbox下载恶意程序WinDef.exe到受害者系统(%AppData%\TMP\windef.exe)
- 执行恶意木马程序
- 主模块
案例4:远程shell执行 (requestlogger)
- 平台:PyPI
- 下载量:227次
- 攻击流程:
- 安装时调用setup.py中的
CustomInstallCommand.execute_script() - 从攻击者服务器(ruikefive.oss-cn-shanghai.aliyuncs.com/test.sh)加载恶意shell脚本
- 目前仅用于统计受害者HTTP请求数据,但可能升级为更危险的攻击
- 安装时调用setup.py中的
案例5:数字钱包APP劫持 (PyTorchc等)
- 平台:PyPI
- 攻击特点:
- 使用包名错误拼写(Typosquatting)攻击
- 针对流行Python组件(Requests、Selenium、Py-cord等)
- 特别针对PyTorch和TensorFlow等AI框架
- 总下载量:3539次
- 攻击流程:
- setup.py中植入加密恶意代码
- 解密后从攻击者服务器下载第二阶段攻击代码(gruppe.py)
- gruppe.py执行第三阶段攻击:
- 采集浏览器Cookie及登录凭证
- 劫持数字钱包应用(替换app.asar文件)
- 下载恶意文件hvnc.py实现开机自启动
- hvnc.py下载并执行最终恶意负载(hvnc.exe)
四、防御与排查措施
1. 排查方式
使用OpenSCA-cli工具进行扫描:
- 将受影响的组件包信息保存为db.json文件,示例格式:
[
{
"product": "evilshield",
"version": "[0.0.2, 0.0.9]",
"language": "python",
"id": "XMIRROR-MAL45-320BFE9",
"description": "Python组件evilshield存在恶意代码,执行反向shell后门攻击。",
"release_date": "2024-03-05"
},
// 其他受影响组件...
]
- 执行扫描命令:
OpenSCA-cli -db db.json -path ${project_path}
2. 防御建议
-
依赖来源验证:
- 只从官方仓库下载依赖
- 验证包签名和哈希值
- 警惕名称相似的包(Typosquatting)
-
依赖版本锁定:
- 使用锁文件(如package-lock.json、Pipfile.lock)
- 避免使用过于宽泛的版本范围
-
安全工具集成:
- 使用SCA(软件成分分析)工具持续监控
- 集成静态代码分析和动态行为监控
-
最小权限原则:
- 开发环境使用非特权账户
- 限制构建系统的网络访问
-
持续监控:
- 订阅安全公告
- 监控依赖更新和安全漏洞
五、总结与趋势
-
攻击趋势:
- PyPI成为主要攻击目标
- 敏感数据窃取仍是主流攻击方式
- 针对数字钱包应用的攻击显著增加
- AI框架(PyTorch、TensorFlow)成为新目标
-
防御方向:
- 加强供应链安全意识
- 建立完善的依赖管理流程
- 实施多层次的安全防护措施
- 持续监控和快速响应机制
通过了解这些攻击手法和案例,开发者可以更好地识别和防范供应链投毒攻击,保护项目和系统安全。