聚焦源代码安全,网罗国内外最新资讯!
编译:代码卫士
威胁行动者们正在利用名为“复活劫持”的攻击方法,即使用此前被删除程序包的名称注册新的 PyPI项目,开展供应链攻击。这种技术“可用于劫持2.2万个已有的 PyPI 包并导致数万次恶意包下载。”
劫持热门项目
“复活劫持”是一种攻击向量,涉及以从 PyPI 平台删除的包名称注册新项目。如此,攻击者可将恶意代码推送到开发人员的拉取更新中。由于 PyPI 允许以已删除 Python 项目的名称进行注册,因此这种攻击是可能实现的。
决定从 PyPI 删除项目的开发人员仅会收到关于潜在后果的提醒,包括“复活劫持”攻击的场景。对话提醒称,“删除该项目将使该项目名称可被其它任何 PyPI 用户使用。该用户将能够以该项目名称进行发布,只要分发文件名称不匹配此前已发布分发的文件名称即可。”
JFrog 公司的研究人员指出,PyPI 上超过2.2万个已删除包易受“复活劫持”攻击,其中一些包非常流行。他们提到,PyPI 上平均每个月被删除的包数量是309个,为攻击者提供了稳定的新机会。
研究人员表示,开发人员删除包的原因多种多样,如该脚本不再需要、重写工具并以新名称发布等。在一些情况下,这些包变得冗余,因为它的新功能已被引入官方库或内置 API中。
“pingdomv3”案例
4月中旬,JFrog 公司研究人员发现“复活劫持”的在野利用,当时威胁行动者针对 “pingdomv3”发动攻击。”pingdomv3” 是对 Pingdom API 网站监控服务的视线。
虽然该包在3月30日被删除,但另外一名开发人员劫持了该名称并在同一天发布了一个更新,即攻击者了解该问题。在随后的更新中包含了一个通过 Base64 混淆且攻击 Jenkins CI/CD 环境的 Python 木马。
问题解决
研究人员以最流行的但已被删除的包的名称创建了新的 Python 项目。
研究人员解释称,PyPI 维护着一个非公开的拦截清单,会阻止某些名称在新项目中注册,但多数已被删除包并未上榜。这就导致研究人员可采取间接措施来缓解“复活劫持”威胁,并以名为 “security_holding” 的账号来注册最为流行的已删除/易受攻击的程序包。这些被弃用的包是空的,因此研究员将其版本号变更为 “0.0.0.1”来确保活跃用户不会拉取更新。这一行为实际上保留了包名称并阻止恶意人员劫持。三个月后,研究人员发现,通过自动脚本和用户输入错误的方式,他们仓库中的包下载量已接近20万次。
“复活劫持”对PyPI的影响要比一般的误植域名 (typosquatting) 更严重,因为为自己所选项目拉取更新的用户不会犯错。为缓解该攻击,用户和组织机构可使用包锁定的方式停留在特定的已知可信的版本、验证包完整性、审计其内容并查找包所有权的变更情况或异常的更新活动。
代码卫士试用地址:https://codesafe.qianxin.com
开源卫士试用地址:https://oss.qianxin.com
推荐阅读
JFrog Artifactory 缺陷导致软件供应链易受缓存投毒攻击
原文链接
https://www.bleepingcomputer.com/news/security/revival-hijack-supply-chain-attack-threatens-22-000-pypi-packages/
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。
觉得不错,就点个 “在看” 或 "赞” 吧~