6个官方python存储库被恶意域名抢注实行供应链攻击挖矿

6个官方python存储库被恶意域名抢注实行供应链攻击挖矿

6个官方python存储库被恶意域名抢注实行供应链攻击挖矿

Sonatype 已经识别出渗透到 PyPI 存储库的恶意域名抢注包,这些包在受影响的机器上秘密地进行挖矿.

下面列出了这些 PyPI 包,总共获得了近5,000 次下载

maratlib
maratlib1
matplatlib-plus
mllearnlib
mplatlib
learninglib

所有这些都是由同一作者(“ nedog123 ”)在 PyPI 上发布的,有些早在今年 4 月就发布了

这些假冒组件是由 Sonatype 的自动恶意软件检测系统 Release Integrity 发现的,它是我们下一代 Nexus Intelligence 引擎的一部分。

我们的分析工具在假冒和恶意软件组件攻击现代软件供应链之前,始终如一地捕获并阻止它们。事实上,自2019年推出以来,发行完整性已确定超过12,000名 可疑NPM开源软件包,其中许多已成为头条新闻一次又一次[ 1234,…]。

虽然我们一直专注于 npm 生态系统,但我的同事和数据科学家Cody Nash 在周末用这些组件向我推荐了我,解释说:“这些包是在探索其他生态系统和开发新的 Release Integrity 恶意软件检测功能时出现的。”

正如 Sonatype 和 npm 等开源生态系统所观察到的那样,Nash 认为这是恶意包渗透 PyPI 的趋势,并预计它会继续增长。本文末尾的条形图将解释原因。

这些包里有什么?

我们此次分析的主要重点是“maratlib”,因为大多数其他恶意组件只是将其作为依赖项引入。例如,前面提到的“learninglib”就是这种情况:

6个官方python存储库被恶意域名抢注实行供应链攻击挖矿
“learninglib”包中的“maratlib”依赖项

此外,其中一些包是“错别字”,或者是预计会被不小心输入错误名称的人抓取的程序。例如,冒牌货“mplatlib”和“matplatlib-plus”以合法的Python绘图软件“ matplotlib ”命名。

“mplatlib”再次引入了恶意的“maratlib”依赖项:

6个官方python存储库被恶意域名抢注实行供应链攻击挖矿
被称为“LKEK”的依赖又是“maratlib”

对于这些包中的每一个,恶意代码都包含在setup.py文件中,该文件是 在包安装期间运行的构建脚本。对于 Sonatype 客户,我们在 sonatype-2021-0722下跟踪这些恶意域名抢注

当我开始分析这些时,我首先查看了“maratlib” 1.0(最新版本):

6个官方python存储库被恶意域名抢注实行供应链攻击挖矿
“maratlib”包含严重混淆的代码

“maratlib”的 1.0 版本被严重混淆并试图连接到 GitHub,但最初并不清楚它在寻找什么。使用流行的工具对代码进行反混淆并没有多大帮助,最初让我感到沮丧。

但是,观察动态行为并在先前版本的“maratlib”中寻找线索有助于解决这个难题。查看 0.6 版,我发现几乎没有混淆代码,而是看到基本上从 GitHub 下载并运行 Bash 脚本的代码:

6个官方python存储库被恶意域名抢注实行供应链攻击挖矿
0.6 代码中突出显示的 URL

但服务于bash脚本(https://github.com/nedog123/files/raw/main/的URL aza.sh)抛出404(未找到)错误。

在该包的每个版本中,这个 Bash 脚本都托管在 GitHub 上,有时称为seo.sh、aza.sh、aza2.shaza-obf.sh等变体,但这些 URL 都不起作用

我继续挖掘并开始在 GitHub 档案和网络镜像中追踪恶意软件作者的别名“nedog123”。不久之后,线索出现了

作者之前使用了别名“nedog123”和“Marat Nedogimov”,但似乎已改用“maratoff”,这是找到一些脚本的地方

此外,在提到别名 nedog123 的 GitHub 镜像上发现的与更新/删除这些脚本相关的提交 ID 与 maratoff 存储库中的提交匹配:

6个官方python存储库被恶意域名抢注实行供应链攻击挖矿
部分版本的“maratlib”拉取的“aza2.sh”Bash脚本的内容

此外,较新的 maratoff 存储库包含引用 已删除的 nedog123 别名的文件。

Bash 脚本在受感染的机器上运行加密矿工挖矿

从图片中可以明显看出, 恶意 PyPI 包提取的所谓aza2.sh Bash 脚本进一步下载了一个名为“Ubqminer”的加密矿工。

在 Bash 脚本中,恶意软件作者已经将默认的 Kryptex钱包地址 (以 ….c0124 结尾)更改为他们自己的:

0x510aec7f266557b7de753231820571b13eb31b57  [交易记录]

此外,经过深入挖掘,现已删除的aza.sh 文件的内容出现了:

6个官方python存储库被恶意域名抢注实行供应链攻击挖矿
现已删除的 aza.sh 脚本的内容(存档提交

该脚本使用了一个不同的开源 GPU 加密程序,称为T-Rex,尽管在某些时候还部署 了前面提到的 Ubqminer。

事实上,对于那些感兴趣的人,aza.sh 和aza2.sh都有完整的提交历史。

PePy 称,自发布以来,这些软件包迄今为止的下载量如下

  1. maratlib:2,371
  2. maratlib1:379
  3. matplatlib-plus:913
  4. mllearnlib:305
  5. mplatlib:318
  6. learninglib:626

… 总计近5,000 次下载。

Sonatype 在周末捕获了这些恶意包并将这些包通知 PyPI 后,将发布我们的发现。

不断发展的开源供应链攻击需要高级保护

再一次,这一特殊发现进一步表明,开发人员是他们编写的软件的新目标。Sonatype 一直在追踪 潜伏在软件存储库中的新型品牌劫持加密挖掘域名抢注恶意软件。我们还发现了关键漏洞和下一代供应链攻击,以及针对知名科技公司的山寨包。

这些 PyPI 包已经在存储库中潜伏了几个月,目标是开发人员系统,目标是将它们变成加密矿工。

好消息是,在过去的几周里,Release Integrity 的实验运行已经成功捕获了超过 3,157 个 PyPI 包。这些组件要么是已确认的恶意组件,要么是先前已知的恶意组件,要么是依赖混淆的模仿者。

6个官方python存储库被恶意域名抢注实行供应链攻击挖矿
每月的恶意 PyPI 包版本

我们现在正在通过 Nexus Intelligence 将我们的恶意软件检测功能也扩展到其他生态系统。

所有这一切不仅需要尽职调查和运气,还需要经验丰富的安全专家的专业知识和数百 TB 的数据。为了跟上恶意软件的变化,Sonatype 会分析每个新发布的 npm 包,以确保开发人员的安全。

我们帮助您保持主动并保护您的软件供应链免受即将到来的攻击。我们基于 AI/ML 的自动化恶意软件检测系统、发布完整性和安全研究团队通力合作,提供全方位保护。发布完整性根据历史供应链攻击和超过五打“信号”确定可能的恶意组件。这种洞察力可以在安全研究人员发现潜在的新攻击之前对其进行标记。

6个官方python存储库被恶意域名抢注实行供应链攻击挖矿
Nexus防火墙组件分析过程

一旦发布完整性将包或依赖项标记为“可疑”,它就会进入隔离队列,以供 Sonatype 安全研究团队手动审查。同时, 在审查进行期间,Nexus 防火墙的用户受到保护,免受这些可疑包的影响。现有组件在“下游”进入开发人员的开源构建环境之前会被隔离。

此外,启用“依赖混淆策略”功能的用户将获得对依赖混淆攻击的主动保护。无论在公共存储库中还是在您的私有内部存储库中存在冲突的包名称,这都适用。

from

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注