事件背景与影响
近期,安全研究人员发现了一个名为 js-logger-pack 的恶意 npm 软件包,该包伪装成合法的日志记录工具,实则是一个功能强大的跨平台信息窃取木马。攻击者巧妙利用了 Hugging Face 的基础设施,不仅将其作为恶意软件的下载源(CDN),还将其作为窃取数据的回传后端。
从我们的应急响应经验来看,攻击者越来越倾向于利用知名大厂的公共云服务或 AI 平台来隐藏恶意流量,这使得传统的基于域名黑名单的防御手段失效。此次事件不仅影响开发者个人工作站,更可能渗透至 CI/CD 流水线,导致企业级代码库与敏感凭据暴露。
攻击链深度解析
该攻击链的设计非常隐蔽,整个过程分为三个阶段:
第一阶段:投毒与伪装。攻击者在 npm 上发布名为 js-logger-pack 的包,其代码库中包含一段看似正常的日志实现,能通过简单的静态代码审计。然而,真正的恶意逻辑隐藏在 package.json 的 postinstall 钩子中,安装脚本会自动执行 node print.cjs,该过程在后台运行,用户几乎无法感知。
第二阶段:载荷下载。脚本会根据宿主机的操作系统(Windows、macOS 或 Linux),从 Hugging Face 的特定仓库下载名为 MicrosoftSystem64 的二进制文件。这一环节是很多企业容易忽视的,因为许多企业的防火墙对 Hugging Face 等开发者常用平台的流量是默认放行的。
第三阶段:持久化与执行。该二进制文件实际上是一个 Node.js 单可执行文件(SEA),运行后会通过计划任务、注册表、LaunchAgents 或 systemd 等方式实现持久化,并建立 WebSocket 连接,开始执行键盘记录、剪贴板监控及敏感文件扫描。
技术手法:将 AI 平台变为“攻击指挥部”
此攻击最值得关注的技术点在于对 Hugging Face 的深度滥用。攻击者不仅利用 Hugging Face 存储恶意载荷,还利用其 Dataset(数据集)功能作为数据窃取的目的地。
当木马执行 upload_folder_hf 任务时,会将受害者的敏感文件压缩打包,并以 agentId 为名上传至攻击者控制的私有数据集。这种方式绕过了传统 C2 服务器的存储压力,且利用了合法平台的加密传输通道,极大增加了溯源和拦截的难度。此外,木马还具备自我更新机制,通过检查存储在 Hugging Face 上的 version.txt 文件,实现无签名校验的静默升级。
安全建议与 Solar 经验
类似攻击近年来明显增加,针对此次供应链投毒,Solar 应急响应团队建议采取以下预防与处置措施:
- 严格依赖审查:在生产环境和开发流水线中,应尽可能锁定 npm 包的具体版本,并使用 npm audit 或类似工具定期扫描依赖项。
- 限制安装钩子:对于高敏感环境,建议在安装依赖时使用 --ignore-scripts 参数,禁止自动执行脚本,防止 postinstall 钩子被利用。
- 流量监控与审计:关注开发人员终端与外部存储平台(如 Hugging Face、GitHub 等)之间的异常数据传输,尤其是短时间内的大量上传行为。
- 应急处置:若确认受到感染,必须立即轮换所有在该机器上使用过的凭据(API Key、SSH 密钥、数据库密码等),并清理系统中的持久化配置项,建议进行全盘镜像取证后重装系统。
如果您想了解勒索病毒的最新发展趋势,或在实际业务中遇到类似安全事件,欢迎关注“Solar应急响应团队”。
全国热线:400-613-6816
官网:www.solarsecurity.cn / www.sierting.com
