返回文章库

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

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

查找币安全研究院

链上取证分析 | Web3 风险核验 | Web3 事件响应
以合法授权、证据保全、隐私保护和可复核流程为前提,不要求用户在线提交敏感凭证或非公开材料。

查看研究院 研究报告中心
## 事件概述 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")` 路径加载时会静默触发恶意流程。 ### 恶意行为流程 当依赖引入后,恶意代码会执行以下操作: - **凭证窃取**:窃取 AWS 云凭证、SSH 私钥、系统环境变量(含 API 密钥与数据库密码) - **主机指纹收集**:获取主机指纹及 `/etc/hosts` 等敏感系统信息 - **数据外传**:通过 DNS 隧道分片外传至攻击者控制的远程服务器 值得注意的是,该流程在依赖引入时不会自动执行(该包未配置 `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` 中的关键字段如下: ```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字符表映射为可打印字符串,恢复后可见外传域名与加密材料 **解码样例:** - `2647M2M6P64656M2G637H` → `bt.node.js` - `3786M216G75727563747164796360727P66796465627M2M6` → 外传域名相关字符串 ### 文件哈希信息 **node-ipc-9.1.6.tgz** - SHA1: `58ae7338960ef525d7c655023d7c81e3ddb283d6` - SHA256: `c2f4dc64aec4631540a568e88932b61daebbfb7e8281b812fa01b7215f9be9ea` **node-ipc-12.0.1.tgz** - SHA1: `fe5d107b9d285327af579259a32977c4f475fa26` - SHA256: `78a82d93b4f580835f5823b85a3d9ee1f03a15ee6f0e01b4eac86252a7002981` **恶意 node-ipc.cjs** - MD5: `d1ba0419cb5e5de91b9b58e87b8322e1` - SHA1: `ab7388363936bf527afd4173b5728c7cdbdd01ab` - SHA256: `96097e0612d9575cb133021017fb1a5c68a03b60f9f3d24ebdc0e628d9034144` ## 防护建议 查找币安全团队建议相关开发者和项目团队立即采取以下措施: 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 生态参与者加强依赖管理,建立版本变更监控机制,共同维护供应链安全。 --- *本文由查找币安全团队整理发布*
在文章库中查看和回复