研究人员周四表示,从 PyPI 开源存储库下载的开源软件包估计有 30,000 次包含恶意代码,这些恶意代码会暗中窃取信用卡数据和登录凭据,并在受感染的机器上注入恶意代码。在一篇帖子中,安全公司 JFrog 的研究人员 Andrey Polkovnichenko、Omer Kaspi 和 Shachar Menashe 表示,他们最近在 PyPI 中发现了八个执行一系列恶意活动的包。根据在 https://pepy.tech(一个提供 Python 包下载统计数据的站点)上的搜索,研究人员估计恶意包被下载了大约 30,000 次。这一发现是近年来滥用开源存储库接受能力的一长串攻击中的最新发现,数百万软件开发人员每天都依赖开源存储库。尽管它们起着至关重要的作用,但存储库通常缺乏强大的安全性和审查控制,当开发人员在不知不觉中感染自己或将恶意代码折叠到他们发布的软件中时,这一弱点有可能导致严重的供应链攻击。 JFrog 首席技术官 Asaf Karas 在一封电子邮件中写道:“在 PyPI 等流行存储库中不断发现恶意软件包是一个令人担忧的趋势,可能导致广泛的供应链攻击。” “攻击者能够使用简单的混淆技术来引入恶意软件,这意味着开发人员必须保持警惕。这是一个系统性威胁,需要由软件存储库的维护者和开发人员在多个层面积极解决。”研究人员感谢 PyPI 维护者 Dustin Ingram 在收到通知后“快速响应并删除了恶意包”。英格拉姆没有立即回应置评请求。星期四运来的不同包裹进行了不同种类的邪恶活动。其中六个有三个有效载荷,一个用于收集 Discord 帐户的身份验证 cookie,第二个用于提取浏览器存储的任何密码或支付卡数据,第三个用于收集有关受感染 PC 的信息,例如 IP 地址、计算机名称和用户名。剩下的两个包包含恶意软件,它们试图连接到攻击者指定的 TCP 端口 9009 上的 IP 地址,然后执行套接字中可用的任何 Python 代码。现在不知道 IP 地址是什么,或者上面是否存在恶意软件。与大多数新手 Python 恶意软件一样,这些包仅使用了简单的混淆,例如来自 Base64 编码器的混淆。以下是包的细分:
Karas 告诉我,前六个程序包有能力感染开发人员的计算机,但无法感染开发人员使用恶意软件编写的代码。 “对于允许在它们安装的机器上执行代码的 pytagora 和 pytagora2 包,这是可能的。”他在直接消息中说。 “在感染开发机器后,他们将允许代码执行,然后攻击者可以下载有效载荷,从而修改正在开发的软件项目。但是,我们没有证据表明这实际上已经完成。”与其花几天时间开发执行日常任务的代码,编码人员可以转而使用 PyPI、RubyGems 或 npm 等存储库来获取同行已经开发的成熟应用程序包。例如,在 PyPI 上可用的 270 万个软件包中,开发人员可以使用这些软件包来让应用程序使用从互联网上抓取的数据来预测房屋的售价、通过亚马逊的简单电子邮件服务发送电子邮件或检查开源代码漏洞。 PyPI 为用 Python 编写的软件提供包,而 RubyGems 和 npm 为 Ruby 和 JavaScript 应用程序提供包。这一至关重要的作用使存储库成为供应链攻击的理想环境,这种攻击使用被称为域名抢注或依赖混淆的技术变得越来越普遍。存储库供应链攻击至少可以追溯到 2016 年,当时一名大学生将恶意包上传到 PyPI。在几个月的时间里,他的冒名顶替代码在 17,000 多个不同的域上执行了 45,000 多次,其中超过一半的时间他的代码被授予了全能的管理权限。从那时起,供应链攻击已成为 RubyGems 和 npm 的常态。最近几个月,白帽黑客设计了一种新型的供应链攻击,该攻击通过将恶意程序包上传到公共代码存储库并为它们指定一个名称,该名称与存储在某个流行软件的内部存储库中的程序包相同。这些所谓的依赖混淆攻击已经让苹果、微软和其他 33 家公司陷入困境。 JFrog 研究人员表示,基于当前存储库安全状态,互联网未来很可能会遇到更多攻击。他们写道:“这项研究中分析的几乎所有代码片段都基于已知的公共工具,只有少数参数发生了变化。” “混淆也是基于公共混淆器。我们希望看到更多这些‘弗兰肯斯坦’恶意软件包从不同的攻击工具中拼接出来(具有更改的渗漏参数)。”