研究背景
随着开源软件的广泛使用,开源软件供应链的安全问题引起了越来越多的关注。根据Sonatype的报告显示[1],开源软件供应链攻击在过去三年中平均年增长率达到了惊人的742%;根据Gartner预计[2],到2025年,全球将会有45%的组织遭遇开源软件供应链攻击。一种典型的开源软件供应链攻击是将恶意代码注入到托管在软件包仓库中的软件包中,进而诱导开源软件使用者下载和调用,从而感染用户主机,达到执行恶意行为的目的。最近的报告[3][4][5][6]显示,软件包仓库NPM和PyPI中涌现出了大量的恶意软件包。例如,PyPI团队在2022年移除了超过12,000个软件包(主要是恶意软件包)[3];而Sonatype团队在2022年12月份发现了422个恶意的NPM软件包和58个恶意的PyPI软件包,这些恶意软件包的主要攻击目的是窃取数据[6]。
投毒示例
2022年12月,流行的深度学习开发框架PyTorch遭遇了软件供应链投毒攻击(如图1所示)——依赖混淆攻击(Dependency Confusion)[7]。攻击者利用了PyTorch的夜间软件包仓库(PyTorch Nightly Build)与PyPI软件包仓库不同步的特点。具体而言,基于PyTorch依赖上游软件包“torchtriton”的事实,攻击者首先在PyPI上传同名恶意软件包“torchtriton”,然后利用包管理工具的版本选择策略,使得在构建PyTorch时自动优先选择PyPI上的“torchtriton”而不是在PyTorch Nightly Build上的合法版本,从而引起恶意软件包的传播。
图 1 PyTorch的夜间软件包仓库遭遇依赖混淆攻击
研究进展
复旦大学CodeWisdom团队的开源风险治理平台“伏羲”上线发布了开源生态投毒的自动化监测系统(如图2所示)。该监测系统通过融合多种语言恶意软件包特征的方式,实现了对PyPI和NPM软件包仓库的准确、持续和全量监测。在40多天的持续监测中,平台共计发现了333个PyPI恶意软件包和208个NPM恶意软件包。这些恶意软件包利用拼写错误攻击(TypoSquatting)、依赖混淆攻击等新型攻击方式,企图通过开源软件供应链依赖实施更广泛的传播,存在巨大的安全隐患。
图 2 “伏羲”平台开源生态投毒检测系统
团队对这些恶意软件包进行了分析,发现其恶意特征和恶意意图不尽相同,包括窃取隐私信息、勒索、植入后门、远程控制、攻击防火墙等(如图3所示)。此外,团队将共计541个恶意软件包及时上报给PyPI和NPM官方。PyPI和NPM官方将这些包及时下架,避免了恶意软件包的进一步蔓延传播,同时平台的检测结果也收到了他们的官方感谢与肯定(如图4所示),共计收到来自官方的385封感谢信,其余156个恶意软件包在上报前已经被下架处理。
图 3 恶意软件包分类
图 4 PyPI和NPM的官方感谢信
最后,可以点击文末的“阅读原文”,跳转到开源风险治理平台“伏羲”进行体验和试用,也欢迎提出宝贵的意见和建议!
参考文献
[1] Sonatype. State of the Software Supply Chain. https://www.sonatype.com/state-of-the-software-supply-chain/introduction, 2023.
[2] Gartner. Gartner identifies top security and risk management trends for 2022. https://www.gartner.com/en/newsroom/press-releases/2022-03-07-gartner-identifies-top-security-and-risk-management-trends-for-2022, 2022.
[3] Dustin Ingram. In 2022, the @pypi team re- moved >12,000 unique projects (mostly mal-ware). https://twitter.com/di_codes/status/1610781657128108033, 2023.
[4] Ravie Lakshmanan. Python developers beware: Clipper malware found in 450+ pypi packages! https://thehackernews.com/2023/02/python-developers-beware-clipper.html, 2023.
[5] Ax Sharma. More Than 200 Cryptomining Packages Flood npm and PyPI Registry. https://blog.sonatype.com/more-than-200-cryptominers-flood-npm-and-pypi-registry, 2022.
[6] Sonetype. Malware monthly - December 2022. https://blog.sonatype.com/malware-monthly-december-2022, 2023.
[7] PyTorch. Compromised pytorch-nightly dependency chain between december 25th and december 30th, 2022. https://pytorch.org/blog/compromised- nightly-dependency/, 2022.
作者:黄凯锋、张峻安、陈碧欢
欢迎大家使用并给予我们宝贵的意见~