我们可以从两个角度来审视软件包劫持:
-
外部包劫持 -
火炬 -
ua-解析器-js -
和 -
自我包劫持 – Protestware -
[伪造者和颜色](https://jfrog.com/blog/n-day-hijack-analyzing-lifespan-package-hijacking-attacks/#faker and colors) -
节点 IPC
软件包劫持的感染方式是什么?
这种方法涉及接管合法的已知软件包并将恶意代码推送到其中。虽然这不是一件容易的事,但它非常有效,因为它可以利用可用软件包的流行度来获得高感染率。检测到软件包劫持后,软件包维护者或公共存储库(例如 npm)的维护者通常会通过删除恶意版本并发布新版本来阻止攻击,从而无法提取受感染的版本。
例如,colors
被劫持的软件包版本 1.4.1、1.4.2 和 1.4.44-liberty-2 不再存在。
Colors 软件包当前版本页面 – 排除恶意版本
1. 外部包劫持
[返回顶部 >](https://jfrog.com/blog/n-day-hijack-analyzing-lifespan-package-hijacking-attacks/#Case study - package hijacking in a year’s span (Nov 2021 - Dec 2022))
软件包劫持通常是通过入侵维护者和开发者的账户或者通过注入隐藏/混淆的恶意代码作为对开源项目的合法代码贡献的一部分来实现的。
火炬
PyTorch 是一个非常流行的 Python 机器学习库,下载量超过 1.8 亿次。
大约 9 个月前,2022 年 12 月 25 日,PyTorch 库遭到依赖劫持攻击,该攻击专门针对机器学习 (ML) 开发人员。
攻击者成功窃取了 PyTorch 维护者凭证,并向项目添加了恶意依赖包。该恶意依赖包torchtriton
可能影响了数千台机器,因为在短短五天内下载次数超过 3000 次。
恶意负载将所有安全外壳 (SSH) 密钥、环境变量和其他敏感信息发送到攻击者的服务器。
**恶意版本创建时间:2022年12月25日。**检测前时间:5天。
![受损的 PyTorch 依赖项](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20863%20828'%3E%3C/svg%3E)受损的 PyTorch 依赖项
ua-解析器-js
另一个值得注意的被攻击和劫持的合法软件包的例子是该ua-parser-js
软件包。
ua-parser-js
是一款流行的软件包,迄今为止下载量已接近 10 亿次。
它于2021年10月22日被劫持,事件仅在几个小时后就被发现。
这个软件包最令人感兴趣的是,注入其中的恶意代码(加密矿工klown
)与另一个冒充真实软件包的恶意软件(名为)相同ua-parser-js
。
这是该软件包开发者发布的声明,他表示他认为有人劫持了他的软件包并发布了其恶意版本。
![”ua-parser-js” 被所有者劫持的软件包公告](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20863%20342'%3E%3C/svg%3E)”ua-parser-js” 被所有者劫持的软件包公告
此事件和其他事件都要求 GitHub 对流行 npm 包的维护者强制实施双因素身份验证:
![GitHub 的 2FA 采用更新](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20863%20271'%3E%3C/svg%3E)GitHub 的 2FA 采用更新
**恶意版本创建时间:2022年10月22日。**检测前的时间:几个小时。
和
2021 年 11 月 4 日,流行的软件包被劫持,仅几个小时后就被发现。有效载荷与(加密货币挖矿程序)coa
中的相同。ua-parser-js
coa
是 的缩写Command-Option-Argument
,在 npm 上每周下载量高达 900 万次,是 GitHub 上近 500 万个开源存储库的基石。这次攻击尤其阴险,因为它利用了多年来一直沉寂的版本,突然出现在 npm 上。这种意想不到的举动让coa
用户陷入混乱,尤其是依赖于这个库的 React 包。
这一事件与 npm 包被劫持有着令人不安的相似之处ua-parser-js
,提醒科技界注意软件供应链日益增长的脆弱性以及不断保持警惕的必要性。
**恶意版本创建时间:2021年11月11日 **检测前时间:几个小时。
![coa 恶意代码报告](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20863%20613'%3E%3C/svg%3E)coa 恶意代码报告
2. 自我包劫持——Protestware
[返回顶部 >](https://jfrog.com/blog/n-day-hijack-analyzing-lifespan-package-hijacking-attacks/#Case study - package hijacking in a year’s span (Nov 2021 - Dec 2022))
软件包劫持不仅可能由恶意的第三方实施,也可能由项目本身的开发人员和维护人员实施。通常只是为了抗议他们所信仰的东西。
我们检查了 3 个公开的开发人员劫持其流行软件包以进行抗议的案例:1. faker、2. Colors 和 3. node-ipc。
伪造者和颜色
colors
和npm包faker
在 Node.js 开发人员中非常受欢迎。colors
允许开发人员向 Node.js 控制台添加样式、字体和颜色,并faker
允许他们在开发过程中生成用于测试目的的数据。
这两个软件包是由同一位作者开发的,非常受欢迎,每周的下载量有数百万次。
2022 年 1 月 7 日,该作者破坏了这两个软件包,以抗议不回馈开源社区的大公司。他们的代码中注入了一个无限循环,导致依赖它们的数千个项目崩溃。这是在恶意版本发布 2 天后检测到的。
![代码中的无限循环](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20863%20182'%3E%3C/svg%3E)
通过对软件包代码进行这一修改,许多公司都受到了添加的恶意代码的影响,并导致其产品损坏。
被劫持的软件包恶意代码正在行动
**恶意版本创建时间:2022年1月7日。**检测前时间:2天。
节点 IPC
在 2022 年 3 月 7 日发生的另一起事件中,开发人员 Brandon Miller 在该node-ipc
软件包中添加了破坏俄罗斯和白俄罗斯机器文件系统的代码,以抗议 2022 年俄罗斯入侵乌克兰。这在恶意版本发布 8 天后才被发现。
当恶意代码检测到该机器的 IP 地址位于俄罗斯或白俄罗斯时,代码就会开始覆盖机器文件系统中的任意文件,用单个字节(❤️表情符号)替换文件的全部内容。
**恶意版本创建时间:2022年3月7日。**检测前时间:8天。
GitHub 安全公告
要等多久才能更新?
下图显示了上述所有劫持事件的检测时间。
检测到包裹劫持事件的天数
从图表中不难看出,发现这些病例的最长时间仅为一周多一点(8天)。
我们的建议:可以肯定地说,在下载和使用新版本的软件包之前等待至少 14 天,可以减轻上述所有被劫持的软件包情况。
原文始发于微信公众号(红云谈安全):N-Day 劫持:分析包裹劫持攻击的生命周期
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论