🤖 AI总结
主题
关于npm注册表中伪装成Strapi插件的恶意软件供应链攻击分析。
摘要
安全研究人员发现36个恶意npm包伪装成Strapi插件,通过自动化脚本执行多阶段攻击,窃取数据并建立持久后门,凸显软件供应链安全风险。
关键信息
- 1 发现36个伪装成Strapi插件的恶意npm包,通过postinstall脚本自动执行。
- 2 攻击载荷包括Redis/PostgreSQL利用、反向Shell部署、凭据收集和持久化植入。
- 3 攻击策略从激进RCE转向侦察、数据窃取,最终建立持久访问,疑似针对加密货币平台。
![]()
网络安全研究人员在npm注册表中发现了36个恶意包,这些包伪装成Strapi CMS插件,但携带不同的有效载荷,用于Redis和PostgreSQL利用、部署反向Shell、收集凭据并投放持久化植入程序。
SafeDep表示:”每个包都包含三个文件(package.json、index.js、postinstall.js),没有描述、存储库或主页,并使用版本3.6.8来伪装成成熟的Strapi v3社区插件。”
所有识别出的npm包都遵循相同的命名约定,以”strapi-plugin-“开头,然后是”cron”、”database”或”server”等短语,以欺骗毫无戒心的开发者下载它们。值得注意的是,官方Strapi插件都在”@strapi/”作用域下。
这些包由四个虚假账户”umarbek1233″、”kekylf12″、”tikeqemif26″和”umar_bektembiev1″在13小时内上传,包括:strapi-plugin-cron、strapi-plugin-config、strapi-plugin-server、strapi-plugin-database、strapi-plugin-core、strapi-plugin-hooks、strapi-plugin-monitor、strapi-plugin-events、strapi-plugin-logger、strapi-plugin-health、strapi-plugin-sync、strapi-plugin-seed、strapi-plugin-locale、strapi-plugin-form、strapi-plugin-notify、strapi-plugin-api、strapi-plugin-sitemap-gen、strapi-plugin-nordica-tools、strapi-plugin-nordica-sync、strapi-plugin-nordica-cms、strapi-plugin-nordica-api、strapi-plugin-nordica-recon、strapi-plugin-nordica-stage、strapi-plugin-nordica-vhost、strapi-plugin-nordica-deep、strapi-plugin-nordica-lite、strapi-plugin-nordica、strapi-plugin-finseven、strapi-plugin-hextest、strapi-plugin-cms-tools、strapi-plugin-content-sync、strapi-plugin-debug-tools、strapi-plugin-health-check、strapi-plugin-guardarian-ext、strapi-plugin-advanced-uuid、strapi-plugin-blurhash。
对这些包的分析显示,恶意代码嵌入在postinstall脚本钩子中,该脚本在”npm install”时执行,无需任何用户交互。它以安装用户的相同权限运行,意味着它在CI/CD环境和Docker容器中滥用root访问权限。
攻击载荷演变过程
该活动分发的载荷演变如下:
1. 通过注入crontab条目武器化本地可访问的Redis实例以实现远程代码执行,每分钟从远程服务器下载并执行shell脚本。该shell脚本通过SSH向Strapi的公共上传目录写入PHP web shell和Node.js反向shell,还尝试扫描磁盘寻找秘密信息并窃取Guardarian API模块。
2. 结合Redis利用和Docker容器逃逸,将shell载荷写入容器外的主机。还在端口4444上启动直接Python反向shell,并通过Redis向应用程序的node_modules目录写入反向shell触发器。
3. 部署反向shell并通过Redis写入shell下载器并执行生成的文件。
4. 扫描系统寻找环境变量和PostgreSQL数据库连接字符串。
5. 扩展的凭据收集器和侦察载荷,用于收集环境转储、Strapi配置、通过运行INFO、DBSIZE和KEYS命令提取Redis数据库、网络拓扑映射、Docker/Kubernetes秘密、加密密钥和加密货币钱包文件。
6. 进行PostgreSQL数据库利用,使用硬编码凭据连接到目标PostgreSQL数据库并查询Strapi特定表寻找秘密。还转储匹配加密货币相关模式的数据,并尝试连接六个Guardarian数据库。这表明威胁行为者已经拥有数据。
7. 部署持久化植入程序,旨在维持对特定主机名(“prod-strapi”)的远程访问。
8. 通过扫描硬编码路径和生成持久反向shell来促进凭据盗窃。
SafeDep表示:”这八个载荷显示了清晰的叙述:攻击者开始时很激进(Redis RCE、Docker逃逸),发现这些方法不起作用后,转向侦察和数据收集,使用硬编码凭据进行直接数据库访问,最后采用针对性凭据盗窃的持久访问。”
载荷的性质,加上对数字资产的关注以及硬编码数据库凭据和主机名的使用,表明该活动可能是针对加密货币平台的定向攻击。建议安装了上述任何包的用户假设已被入侵并轮换所有凭据。
其他供应链攻击
这一发现与针对开源生态系统的几起供应链攻击的发现相一致:
名为”ezmtebo”的GitHub账户已在各种开源存储库中提交了超过256个包含凭据窃取载荷的拉取请求。
“dev-protocol”(一个经过验证的GitHub组织)被劫持,用于分发带有错误拼写npm依赖项的恶意Polymarket交易机器人,这些依赖项窃取钱包私钥。
流行的Emacs包”kubernetes-el/kubernetes-el”遭到入侵,利用其GitHub Actions工作流中的Pwn Request漏洞。
合法的”xygeni/xygeni-action” GitHub Actions工作流使用被盗的维护者凭据遭到入侵,植入反向shell后门。
合法的npm包”mgc”通过账户接管遭到入侵,推送了四个包含投放器脚本的恶意版本。
名为”express-session-js”的恶意npm包冒充”express-session”,包含一个投放器,用于检索下一阶段的远程访问木马。
合法的PyPI包”bittensor-wallet”遭到入侵,部署了一个在钱包解密操作期间触发的后门。
名为”pyronut”的恶意PyPI包冒充流行的Python Telegram API框架”pyrogram”,嵌入隐蔽后门。
三个由”IoliteLabs”发布的恶意Microsoft Visual Studio Code扩展在2026年3月25日更新,启动针对Windows和macOS系统的多阶段后门。
“KhangNghiem/fast-draft” VS Code扩展的多个版本在Open VSX上执行GitHub托管的下载器。
Group-IB在2026年2月发布的报告中透露,软件供应链攻击已成为”重塑全球网络威胁格局的主导力量”。威胁行为者正在追求可信供应商、开源软件、SaaS平台、浏览器扩展和托管服务提供商,以获得对数百个下游组织的继承访问权限。
供应链威胁可以迅速将单个本地化入侵升级为具有大规模跨境影响的事件,攻击者将供应链入侵产业化,将其转变为”自我强化”的生态系统,因为它提供了覆盖范围、速度和隐蔽性。
Group-IB表示:”npm和PyPI等包存储库已成为主要目标,被盗的维护者凭据和自动化恶意软件蠕虫被用来入侵广泛使用的库,将开发管道转变为恶意代码的大规模分发渠道。”
Q&A
Q1:这些伪装成Strapi CMS插件的恶意npm包是如何工作的?
A:这些恶意包将恶意代码嵌入在postinstall脚本钩子中,在执行”npm install”时自动运行,无需用户交互。它们以安装用户的相同权限运行,在CI/CD环境和Docker容器中可能获得root访问权限,然后执行Redis和PostgreSQL利用、部署反向Shell、收集凭据等恶意活动。
Q2:如何识别这些恶意的Strapi插件包?
A:这些恶意包都以”strapi-plugin-“开头,后跟”cron”、”database”、”server”等词汇,没有描述、存储库或主页信息,版本号都是3.6.8。需要注意的是,官方Strapi插件都在”@strapi/”作用域下,而这些恶意包不在该作用域内。
Q3:如果已经安装了这些恶意包应该怎么办?
A:如果已经安装了任何这些恶意包,应该立即假设系统已被入侵,并采取以下措施:轮换所有凭据,检查系统是否存在持久化植入程序,扫描环境变量和数据库连接字符串是否被窃取,检查Redis和PostgreSQL数据库是否被利用,并全面检查系统安全性。