摘要
Mend.io 威胁情报团队于 2025 年 12 月 16 日截获一场极具隐蔽性的供应链攻击行动。一名代号为 sdjkals 的用户正以惊人的速度向 NPM 注册表灌注伪装成 WOFF2 字体档的恶意分片载荷(Split Payloads)。本文将深度剖析这种绕过传统静态检测的「化整为零」战术,并提供 Mend.io 的防御策略,协助企业在黑客组装完毕前斩断攻击链。
引言:当字体档不再只是字体
在常规的开源组件监控中,我们习惯关注可执行代码(.js、.exe、.sh),往往忽视了那些看似无害的静态资源。然而,黑客正是利用了这个盲点。
Mend.io 威胁研究团队近日发现,NPM 用户 sdjkals 在短短数小时内发布了 10 个看似普通的字体包,版本号迅速飙升至 v1.0.1912。这些包内含总计近 900GB 的数据,伪装成标准的 WOFF2 字体文件。但深入分析显示,这些根本不是字体,而是被精心切割、加密的攻击载荷分片。
这不仅仅是一次垃圾数据灌注,这是一场经过精密计算的基础设施滥用(Infrastructure Abuse)与检测规避(Detection Evasion)演练。黑客正在测试如何将 NPM 变成他们的免费 C2(命令与控制)服务器或恶意软件分发网络。
对于技术决策者,这意味着:
- 传统防御失效:仅扫描单个包的恶意代码已不足以发现威胁,因为单个分片本身是「无毒」的。
- 供应链被武器化:你的构建管道可能正在不知不觉中下载并组装黑客的攻击工具。
- 资源消耗风险:频繁的恶意更新将消耗大量的带宽与存储,甚至导致构建服务器瘫痪。
三大核心价值:Mend.io 如何破解「化整为零」的供应链隐形攻击
价值一:识破「分片伪装」—— 跨包关联分析能力
攻击手法:黑客将一个巨大的恶意载荷切割成数千个小文件(如 segment_000128.woff2),分散在 @sdjkals/lib-v1-ifmt、@sdjkals/media-static-pro 等多个看似无关的包中。传统安全工具将每个包视为独立个体进行扫描,由于单个包内只包含「损坏的字体文件」和简单的 package.json,因此很难触发恶意代码警报。
Mend.io 防御机制:Mend 供应链防御(Supply Chain Defender)不只看单个包,而是具备生态系统级别的关联分析能力。我们的算法检测到了跨多个包的异常模式:
- 文件名序列断层:发现不同包之间的文件名(如 segment_NNNNNN)存在连续性逻辑(Package A 结束于 158,Package B 开始于 283)。
- 发布者行为指纹:识别出同一用户 sdjkals 在极短时间内对多个包进行高频版本迭代的异常行为。
- 元数据一致性:所有包均使用通用的 "Assets" 描述与极简结构,这在正常开源项目中极为罕见。
客户价值:Mend 能在黑客「组装」攻击载荷之前,就识别出这些散落的「零件」,提前发出预警,防止恶意软件在你的环境中合体。
价值二:抵御「版本洪水」—— 异常流量与行为阻断
攻击手法:sdjkals 的版本号在极短时间内从 1.0.0 飙升至 1.0.1912。这种「版本洪水」攻击有两个目的:一是掩盖真实的恶意更新,二是利用 NPM 的 CDN 机制进行大规模数据分发(类似于将 NPM 用作免费的云存储)。这会导致企业的代理缓存服务器(Proxy/Cache)被垃圾数据填满,甚至触发上游的速率限制。
Mend.io 防御机制:Mend 提供行为异常检测(Behavioral Anomaly Detection)。
- 发布频率监控:即时标记出超出正常开发周期的极端发布频率(如每分钟发布新版本)。
- 体积 / 内容比对:监测到包体积巨大(90MB+)且内容熵值(Entropy)异常高(疑似加密数据)的情况,自动触发隔离策略。
客户价值:保护你的开发基础设施免受垃圾数据轰炸,确保 CI/CD 管道的带宽与存储资源不被滥用,维持构建效率。
价值三:斩断「隐形组装」—— 动态分析与安装拦截
攻击手法:这些分片文件本身不能执行,但黑客的最终目标是通过一个轻量级的「加载器(Loader)」脚本(可能伪装成另一个依赖项),在安装后(Post-install)或运行时将这些 woff2 文件读取、拼接、解密,还原成可执行的恶意二进制文件(如勒索软件或挖矿程序)。
Mend.io 防御机制:Mend 的恶意软件检测引擎结合了静态与动态分析。
- 策略即代码(Policy as Code):企业可设定规则,自动拦截任何被标记为「可疑基础设施滥用」的包,或禁止安装发布时间极短、未经社群验证的包。
- 已知威胁情报库:Mend 威胁情报团队已将 sdjkals 及其所有相关包加入黑名单。一旦你的开发者试图 npm install 这些包,Mend 会直接在客户端进行拦截。
客户价值:在攻击发生的最前端 —— 开发者拉取代码时 —— 就进行阻断,确保恶意载荷永远无法进入你的内网或生产环境。
威胁情报案例:sdjkals 攻击行动深度解析
背景:NPM 监控警报触发
时间:2025 年 12 月 16 日 13:02 ET事件:Mend.io 威胁情报系统监测到 NPM 注册表中出现异常流量峰值,源头指向单一用户 sdjkals。
攻击特征分析
-
伪装性极强
- 发布了 10 个包,命名极具欺骗性,如 @sdjkals/lib-v1-ifmt、@sdjkals/media-static-pro、@sdjkals/font-core-v1。
- 内容伪装成 .woff2 字体文件,文件头包含合法的 WOFF2 魔术字节(Magic Bytes),以此欺骗文件类型检测工具。
- 但标准字体解析工具无法打开这些文件,二进制分析显示内容可能被加密或使用了非标准压缩。
-
分片式架构(Split-Payload)
- 每个包包含 31-33 个文件,每个文件 2-3MB。
- 文件名呈现全局连续性,例如:@sdjkals/lib-v1-ifmt: segment_000128.woff2 - segment_000158.woff2...(中间跳过部分编号)...@sdjkals/media-static-pro: segment_000283.woff2 - segment_000313.woff2
- 这表明这是一个巨大的单一文件被切分后,分散存储于不同包中。唯有将所有包下载并按顺序拼接,才能还原真实载荷。
-
基础设施滥用
- 版本号异常:@sdjkals/data-lib-kernel 已更新至 v1.0.1912。
- 每几分钟推送新版本,利用 NPM 的版本历史功能存储海量数据。
- 总计托管了近 900GB 的混淆数据。
潜在危害
这很可能是一次概念验证(PoC)或僵尸网络基础设施的搭建。黑客展示了如何利用 NPM 免费分发大规模恶意软件,而不会触发针对单个小文件的病毒扫描。
结论:别让你的依赖项成为黑客的「云存储」
sdjkals 事件再次证明,供应链攻击的手法正在快速演进。黑客不再只是在代码中写入 eval () 这么简单,他们正在利用生态系统本身的特性 —— 分包机制、版本管理、CDN—— 来构建复杂的攻击链。
面对这种「化整为零」的攻击,传统的漏洞扫描器(只看 CVE)和简单的恶意软件扫描器(只看单文件特征)已完全失效。你需要的是具备全局视野与行为分析能力的新一代 SCA 解决方案。
Mend.io 已经为所有客户拦截了 sdjkals 的攻击路径。我们的 Supply Chain Defender 不仅能识别已知的恶意包,更能透过行为模式发现未知的威胁。
563

被折叠的 条评论
为什么被折叠?



