返回文章库

供应链投毒预警:node-ipc 遭入侵,三个恶意版本窃取云凭证与私钥

查找币 漏洞披露 安全研究 Web3安全 区块链安全
供应链投毒预警:node-ipc 遭入侵,三个恶意版本窃取云凭证与私钥

事件概述

2026年5月14日,查找币安全团队威胁情报监控系统捕获到 npm 生态中广泛使用的 Node.js IPC 工具包 node-ipc 出现三个异常发布版本:9.1.6、9.2.3 和 12.0.1。该组件周均下载量约53万次,直接依赖项目超过400个,在 Node.js 生态中覆盖面极广,本次投毒事件影响面不容忽视。

攻击链路分析

恶意版本特征

事件链路显示,三个恶意版本的 node-ipc.cjs 文件尾部均新增了约80KB的混淆代码,具备凭据收集与 DNS 外传能力。经反混淆比对确认,9.1.6、9.2.3 和 12.0.1 的入口代码字节级一致,表明攻击者采用了统一的恶意载荷。

入侵方式

本次投毒属于正版包遭入侵场景,攻击者未创建伪造包名,而是沿用 node-ipc 的真实命名空间、仓库元数据与作者信息,通过官方发布链路向用户正常依赖分发了受污染版本。受害者项目在 require("node-ipc") 路径加载时会静默触发恶意流程。

恶意行为流程

当依赖引入后,恶意代码会执行以下操作:

值得注意的是,该流程在依赖引入时不会自动执行(该包未配置 preinstall/install/postinstall/prepare 等生命周期脚本),风险点在于后续流程中的实际代码加载行为,例如构建脚本、测试运行或应用运行时执行了 require("node-ipc")。

版本历史与异常行为

回溯版本历史,该组件的异常活动特征明显:

版本 发布时间 发布者 备注
12.0.0 2024-08-12 riaevangelist(原作者) 正常版本
9.1.6 2026-05-14 atiertant 恶意版本
9.2.3 2026-05-14 atiertant 恶意版本
12.0.1 2026-05-14 atiertant 恶意版本

该项目在 12.0.0 发布后陷入长达21个月的停更期,直到近期突然由另一个名为 atiertant(a.tiertant@atlantis-software.net)的账号推送三个恶意版本。尽管该账号目前位列 node-ipc 的维护者名单,但在本次投毒事件之前,其从未有过该组件的发布历史。

这种“高下载量休眠项目 + 长期停更后由新凭证突发推送”的异常行为,是 NPM 供应链攻击的典型范式。其幕后成因通常指向两种可能:

  1. atiertant 的账号凭证遭攻击者窃取
  2. 该账号本身就是攻击者通过某种手段被特意添加进维护者列表

与历史事件的关联

该事件与2022年历史投毒事件(CVE-2022-23812)存在技术家族相似性,但不应直接归入同一漏洞单元。历史事件的主要风险在于破坏性行为,而本轮样本的主线为凭据窃取与隐蔽外传,攻击目的更加明确——获取高价值凭证数据。

技术细节深度解析

样本差异与入口注入

本轮投毒覆盖版本为 node-ipc@9.1.6、node-ipc@9.2.3、node-ipc@12.0.1,均为2026年5月14日发布。三者的官方入口文件内容高度一致,且保留 node-ipc 真实包元信息。

恶意逻辑被注入到 node-ipc.cjs(CommonJS 入口),而 ESM 入口 node-ipc.js 保持干净,说明攻击者只在 CommonJS 入口上做了投毒。package.json 中的关键字段如下:

{
  "main": "node-ipc.cjs",
  "exports": {
    ".": {
      "import": "./node-ipc.js",
      "require": "./node-ipc.cjs"
    }
  }
}

由此可见,只有 require("node-ipc") 的加载路径会进入污染代码,构成实质攻击入口。

混淆还原与关键字符串解码

反混淆后可见三类关键技术:

  1. 控制流平坦化:使用 while(!![]) { switch-case } 结构打乱执行顺序
  2. 字符串表索引化:真实文本被统一替换为 _0x 查询函数
  3. 自定义 Base-16 编码函数:将16字符表映射为可打印字符串,恢复后可见外传域名与加密材料

解码样例:

文件哈希信息

node-ipc-9.1.6.tgz

node-ipc-12.0.1.tgz

恶意 node-ipc.cjs

防护建议

查找币安全团队建议相关开发者和项目团队立即采取以下措施:

  1. 版本锁定:立即检查项目中 node-ipc 的版本,避免使用 9.1.6、9.2.3 和 12.0.1,回滚至已知安全版本(如 12.0.0)
  2. 凭证轮换:若项目在受影响期间运行过,立即轮换所有 AWS 凭证、SSH 私钥及数据库密码
  3. 环境审计:检查系统环境变量是否暴露敏感信息,审计 /etc/hosts 文件变更
  4. 依赖审查:检查项目依赖树,确认是否存在间接依赖 node-ipc 的组件
  5. 监控告警:启用依赖包的版本变更监控,对长期停更后突然发布新版本的项目保持警惕

总结

本次 node-ipc 投毒事件再次敲响供应链安全的警钟。攻击者通过入侵维护者账户或利用维护者权限,向广泛使用的开源组件注入恶意代码,窃取高价值凭证数据。这种攻击模式隐蔽性强、影响面广,对 Web3 和传统开发项目均构成严重威胁。

查找币监控系统已捕获本次攻击并触发高危告警,相关客户已收到通知。我们建议所有 npm 生态参与者加强依赖管理,建立版本变更监控机制,共同维护供应链安全。


本文由查找币安全团队整理发布

前往社区查看和回复