打开网易新闻 查看精彩图片

npm仓库上周被塞进36个"李鬼"插件,全部瞄准同一个开源CMS。攻击者没搞广撒网,而是盯着一家加密货币支付平台 Guardarian 反复测试——从Redis远程执行到直取数据库热钱包,整套攻击链在13小时内迭代了8个版本。

这不是普通的供应链投毒。SafeDep团队在4月3日捕获样本时发现,攻击者像是在用生产环境当沙盒:每过一小时就推一个新变种,看哪种能摸到核心资产。

三文件结构+固定版本号:伪装成"官方社区插件"

三文件结构+固定版本号:伪装成"官方社区插件"

恶意包全部挂在四个账号下:umarbek1233、kekylf12、tikeqemif26、umar_bektembiev1。安全团队判断是同一人操作。

每个包的结构完全一致,版本号锁死3.6.8——这个细节很狡猾。Strapi社区插件确实有大量3.x版本遗留,开发者看到熟悉的版本号容易放下戒心。

包名更是精心设计:strapi-plugin-cron(定时任务)、strapi-plugin-events(事件系统)、strapi-plugin-seed(数据种子)……全是Strapi生态里真实存在的功能类别。有开发者评论,"我扫一眼名字根本不会怀疑,太像官方命名规范了"。

攻击触发点藏在postinstall脚本里。npm install执行完毕、控制台还没清空时,恶意代码已经跑完第一轮侦察——不需要开发者调用任何API,甚至不需要import。

第八个变种才露出獠牙:主机名白名单+针对性数据库探测

第八个变种才露出獠牙:主机名白名单+针对性数据库探测

SafeDep的动态分析管道最先报警的是strapi-plugin-events。这个样本在文件系统里翻找密钥文件,同时向外连了24次,目标IP 144[.]31[.]107[.]231。

但真正的狠活在后面。研究团队还原了13小时内的8个变种演进:

前两个版本还在试探:Redis远程代码执行、Docker容器逃逸——典型的"能拿到shell就算赢"思路。

中间三个版本转向信息收集:环境变量、私钥文件、Redis内存转储、Kubernetes服务账户令牌,全部明文HTTP外传,连TLS都懒得套。

第六个变种strapi-plugin-seed开始精准打击。它用硬编码凭据连PostgreSQL,专门找四个数据库名:guardarian、guardarian_payments、exchange、custody。Guardarian是一家提供法币-加密货币通道的支付服务商,这套组合拳等于直接问"热钱包在哪"。

最后两个变种升级到"环境感知":第七版只在主机名精确匹配prod-strapi时激活,第八版进一步收紧条件——既要是生产环境,又要满足特定内部网络标识。

这种"白名单触发"机制解释了为什么攻击者敢在公开仓库反复迭代:大部分沙盒分析环境根本触发不了最终载荷,只有真实生产服务器能解锁完整攻击链。

供应链攻击正在从"撒网"转向"蹲点"

供应链攻击正在从"撒网"转向"蹲点"

传统认知里,npm恶意包追求曝光量——名字起得越通用,撞上的开发者越多。这次 campaign 反其道而行:36个包全部围绕Strapi生态,命名高度垂直,甚至早期版本里就嵌着Guardarian的硬编码引用。

SafeDep分析师指出,攻击者显然提前研究了目标架构。"他们知道Guardarian用Strapi做后台,知道数据库命名规范,知道生产环境的主机名规则。这不是随机撞库,是拿着蓝图施工。"

更值得警惕的是迭代速度。8个变种在13小时内推送,平均不到两小时一次更新。安全团队对比时间戳发现,每次更新都对应前一次载荷被某台服务器执行后的几分钟——攻击者在实时监控反馈,当场修bug。

这种"开发-部署-观测-迭代"的闭环,以往只在APT级别的定向攻击里见过。现在被用在了开源供应链上,成本几乎为零。

明文HTTP外传:技术粗糙但意图明确

明文HTTP外传:技术粗糙但意图明确

所有窃取的数据都走明文HTTP,这在2026年显得格格不入。安全研究者通常把这解读为"攻击者不在乎被发现"——毕竟流量一抓包就露馅。

但另一种可能是刻意简化。TLS证书需要注册、需要维护链路上下的兼容性,而HTTP只需要一个IP。对于"测试-迭代-撤退"的短期campaign,能省则省。

被盗数据清单本身说明了攻击者的优先级:环境文件(.env)排第一,里面是数据库连接串和API密钥;私钥文件第二,可能涉及区块链钱包;Redis dump第三,内存里常缓存着会话令牌;Kubernetes service account token第四,用于横向移动。

如果Guardarian的生产环境被攻破,攻击者将直接拿到热钱包凭据、完整交易流水、用户资金托管记录。对于一家支付平台,这等于核心业务裸奔。

目前四个恶意账号已被npm封禁,相关包版本下架。但SafeDep提醒,这类"精准供应链蹲点"的模式可能复制到其他开源生态——攻击者已经证明,针对特定企业的开发依赖投毒,ROI远高于广撒网。

Guardarian尚未公开回应是否遭受实际入侵。如果你所在团队使用Strapi,最近两周有没有安装过名字带cron、events、seed、api的社区插件?