「紧急提醒」PyPI 存储库受到攻击:用户注册和包上传暂时停止插图

攻击详情

Python 编程语言的官方第三方软件存储库 Python Package Index (PyPI) 的维护者已暂时禁用用户注册和上传新包的功能,直至另行通知。

管理员在 5 月 20 日发布的通知中说:“过去一周在索引上创建的恶意用户和恶意项目的数量已经超过了我们及时响应的能力,尤其是在多名 PyPI 管理员休假的情况下。” 

没有披露有关将这些流氓包发布到 PyPI 所涉及的恶意软件和威胁参与者的性质的更多详细信息。

冻结新用户和项目注册的决定是在 PyPI 等软件注册中心一次又一次被证明是攻击者想要毒害软件供应链和破坏开发人员环境的热门目标之际做出的。

本周早些时候,以色列网络安全初创公司 Phylum发现了一个活跃的恶意软件活动,该活动利用以 OpenAI ChatGPT 为主题的诱饵诱使开发人员下载能够窃取剪贴板内容的恶意 Python 模块,以劫持加密货币交易。

ReversingLabs 在类似的发现中,在 npm 存储库中发现了多个名为 nodejs-encrypt-agentnodejs-cookie-proxy-agent 的 npm 包,它们会投放一个名为 TurkoRat 的木马。

有关TurkoRAT相关信息

软件安全公司 ReversingLabs 的研究人员分析了在 npmjs.com 注册表中潜伏了两个多月的三个 npm 包。

这些包,总共下载了 1,200 多次,被称为:

包裹版本总下载量
nodejs-encrypt-agent6.0.2、6.0.3、6.0.4、6.0.5521
nodejs-cookie-proxy-agent1.1.0、1.2.0、1.2.1、1.2.2、1.2.3、1.2.4678
axios-proxy1.7.3、1.7.4、1.7.7、1.7.9、1.8.9、1.9.923

“两个多月前首次发布,nodejs-encrypt-agent乍一看似乎是一个合法的包,”ReversingLabs 研究人员在他们的报告中说。

“然而,差异给我们的研究人员带来了危险信号。尽管如此,我们的第一个想法仍然是这个包不可能是恶意的。如果是的话,它肯定会被 npm 管理员注意到并删除。”

研究人员发现,尽管nodejs-encrypt-agent最初并没有发出警报,甚至还反映了 agent-base 等合法软件包的功能, 但它还有更多功能。

「紧急提醒」PyPI 存储库受到攻击:用户注册和包上传暂时停止插图1
恶意包nodejs-encrypt-agent 的 npm 页面(ReversingLabs)

“然而,有一个很小但非常重要的区别:nodejs-encrypt-agent包包含一个可移植的可执行 (PE) 文件,当 ReversingLabs 分析时发现该文件是恶意的,”研究人员写道。

所指的 PE 文件是 Windows 可执行文件“lib.exe”,大小约为 100 MB,乍看之下可能并不可疑。

「紧急提醒」PyPI 存储库受到攻击:用户注册和包上传暂时停止插图2
lib.exe 存在于 nodejs-encrypt-agent npm 包中 (BleepingComputer)

该文件在 PE 标头和元数据、代码和功能方面非常类似于真正的 NodeJS 应用程序。事实上,BleepingComputer 观察到,某些版本的nodejs-encrypt-agent中存在的“lib.exe”可执行文件变体的检测率非常低:

「紧急提醒」PyPI 存储库受到攻击:用户注册和包上传暂时停止插图3
某些“lib.exe”文件的低 VirusTotal 检测率 (VirusTotal)

ReversingLabs 专门分析的lib.exe也是如此。VirusTotal 分析揭示了可执行文件如何模仿 Node.js 并包含来自合法应用程序的相同元数据。

分析恶意包的 ReversingLabs 研究员 Igor Kramarić 发现nodejs-encrypt-agent中的一个或多个 JavaScript 文件包含合法功能,但也有悄悄运行捆绑的“lib.exe”的代码:

「紧急提醒」PyPI 存储库受到攻击:用户注册和包上传暂时停止插图4
运行捆绑的“lib.exe”的 npm 包(ReversingLabs)

“正如我们在上面观察到的:毫无疑问,在 npm 包中发现的 PE 是恶意的,”ReversingLabs 的 Lucija Valentić 说。

有问题的恶意可执行文件运行了所谓的 TurkoRAT 信息窃取程序——一种可定制的“抓取程序”和凭证窃取程序,很难检测到。

“观察到的恶意或可疑行为列表很长,其功能旨在从受感染的系统中窃取敏感信息,包括用户登录凭据和加密钱包,以及愚弄或击败用于分析恶意文件的沙箱环境和调试器。”

「紧急提醒」PyPI 存储库受到攻击:用户注册和包上传暂时停止插图5
EXE (ReversingLabs) 中打包的一段 TurkoRAT 代码

nodejs-encrypt-agent一样, nodejs-cookie-proxy-agent的版本  也删除了这个木马,但在两者之间引入了一个额外的步骤来逃避检测。

nodejs-cookie-proxy-agent没有直接在其中捆绑“lib.exe”,而是将axios-proxy 列为  依赖项,后者包含恶意可执行文件,只要用户安装前一个包,它就会被提取。

“这一次,攻击者将其伪装成一个依赖项axios-proxy,它被导入到nodejs-cookie-proxy-agent版本 1.1.0、1.2.0、1.2.1 和 1.2.2 中的每个文件中,”揭示了研究人员。

所有恶意包在被 ReversingLabs 检测到后不久就从 npm 注册表中删除。但是,研究人员警告说,这些在 npm 上保留了两个多月的事实凸显了未经审查的开源包可能对软件供应链安全构成的持续风险。