供应链投毒预警 | 开源供应链投毒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次
  • 攻击流程
    1. 组件入口__init__.py加载执行utils.py中的NetUtils.run()函数
    2. 通过subprocess.Popen()执行base64编码的反向shell代码
    3. 从攻击者服务器获取远控IP和端口(157.245.70.91:1338)
    4. 建立反向shell连接

案例3:恶意木马植入 (pytimicer-c)

  • 平台:PyPI
  • 版本:10个不同版本
  • 下载量:近2000次
  • 攻击流程
    1. 主模块pytimicer_c.py中嵌入zip压缩及base64编码的恶意代码
    2. 从Dropbox下载恶意程序WinDef.exe到受害者系统(%AppData%\TMP\windef.exe)
    3. 执行恶意木马程序

案例4:远程shell执行 (requestlogger)

  • 平台:PyPI
  • 下载量:227次
  • 攻击流程
    1. 安装时调用setup.py中的CustomInstallCommand.execute_script()
    2. 从攻击者服务器(ruikefive.oss-cn-shanghai.aliyuncs.com/test.sh)加载恶意shell脚本
    3. 目前仅用于统计受害者HTTP请求数据,但可能升级为更危险的攻击

案例5:数字钱包APP劫持 (PyTorchc等)

  • 平台:PyPI
  • 攻击特点
    • 使用包名错误拼写(Typosquatting)攻击
    • 针对流行Python组件(Requests、Selenium、Py-cord等)
    • 特别针对PyTorch和TensorFlow等AI框架
  • 总下载量:3539次
  • 攻击流程
    1. setup.py中植入加密恶意代码
    2. 解密后从攻击者服务器下载第二阶段攻击代码(gruppe.py)
    3. gruppe.py执行第三阶段攻击:
      • 采集浏览器Cookie及登录凭证
      • 劫持数字钱包应用(替换app.asar文件)
      • 下载恶意文件hvnc.py实现开机自启动
    4. hvnc.py下载并执行最终恶意负载(hvnc.exe)

四、防御与排查措施

1. 排查方式

使用OpenSCA-cli工具进行扫描:

  1. 将受影响的组件包信息保存为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"
  },
  // 其他受影响组件...
]
  1. 执行扫描命令:
OpenSCA-cli -db db.json -path ${project_path}

2. 防御建议

  1. 依赖来源验证

    • 只从官方仓库下载依赖
    • 验证包签名和哈希值
    • 警惕名称相似的包(Typosquatting)
  2. 依赖版本锁定

    • 使用锁文件(如package-lock.json、Pipfile.lock)
    • 避免使用过于宽泛的版本范围
  3. 安全工具集成

    • 使用SCA(软件成分分析)工具持续监控
    • 集成静态代码分析和动态行为监控
  4. 最小权限原则

    • 开发环境使用非特权账户
    • 限制构建系统的网络访问
  5. 持续监控

    • 订阅安全公告
    • 监控依赖更新和安全漏洞

五、总结与趋势

  1. 攻击趋势

    • PyPI成为主要攻击目标
    • 敏感数据窃取仍是主流攻击方式
    • 针对数字钱包应用的攻击显著增加
    • AI框架(PyTorch、TensorFlow)成为新目标
  2. 防御方向

    • 加强供应链安全意识
    • 建立完善的依赖管理流程
    • 实施多层次的安全防护措施
    • 持续监控和快速响应机制

通过了解这些攻击手法和案例,开发者可以更好地识别和防范供应链投毒攻击,保护项目和系统安全。

开源供应链投毒攻击分析与防御指南 一、供应链投毒攻击概述 供应链投毒攻击是指攻击者通过向开源软件仓库(如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请求数据,但可能升级为更危险的攻击 案例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文件,示例格式: 执行扫描命令: 2. 防御建议 依赖来源验证 : 只从官方仓库下载依赖 验证包签名和哈希值 警惕名称相似的包(Typosquatting) 依赖版本锁定 : 使用锁文件(如package-lock.json、Pipfile.lock) 避免使用过于宽泛的版本范围 安全工具集成 : 使用SCA(软件成分分析)工具持续监控 集成静态代码分析和动态行为监控 最小权限原则 : 开发环境使用非特权账户 限制构建系统的网络访问 持续监控 : 订阅安全公告 监控依赖更新和安全漏洞 五、总结与趋势 攻击趋势 : PyPI成为主要攻击目标 敏感数据窃取仍是主流攻击方式 针对数字钱包应用的攻击显著增加 AI框架(PyTorch、TensorFlow)成为新目标 防御方向 : 加强供应链安全意识 建立完善的依赖管理流程 实施多层次的安全防护措施 持续监控和快速响应机制 通过了解这些攻击手法和案例,开发者可以更好地识别和防范供应链投毒攻击,保护项目和系统安全。