返回文章库

深度分析:Red Hat Cloud Services npm 包供应链投毒事件

查找币 漏洞披露 安全研究 Web3安全 区块链安全
深度分析:Red Hat Cloud Services npm 包供应链投毒事件

查找币安全研究院

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

查看研究院 研究报告中心
## 概述 近日,查找币安全团队通过自研的监控系统捕获到一起针对 Red Hat Cloud Services 组织的高危供应链投毒事件。本次事件波及该组织下的 **32 个 npm 包**,涉及 **96 个异常版本**。经离线分析确认,攻击者并非采用常见的仿冒命名空间或 typo-squatting 手法,而是直接篡改了 `@redhat-cloud-services` 命名空间下的真实包版本,在 tarball 中植入了多层混淆的恶意 loader,并通过 npm 生命周期脚本实现自动触发。 ## 事件响应 查找币监控系统在捕获该事件后,立即触发高危告警,并对攻击链的混淆结构、载荷解密、能力还原及 IOC 进行了系统性分析。以下技术分析基于本地离线静态分析,对 3 个 npm tgz 样本进行解包、解码和解混淆验证。 ### 样本清单 | 包名 | 版本 | tgz SHA-256 | |------|------|-------------| | @redhat-cloud-services/frontend-components-config | 6.11.3 | 0c9c67ec40d5f23efa1ec3470d0ac88b4993ccc0e92be913fc29a337dfc4f060 | | @redhat-cloud-services/types | 3.6.1 | d543bb3cdf1569c2b3d38c8a4081ed746cfe78bf3236c2302704d79ab7fa9558 | | @redhat-cloud-services/rule-components | 4.7.2 | aaf00d06baa3c679b82452c50014e9824b8874e9ca2d150f19095f8de19ba90f | ## 攻击链分析 ### 1. 入口:npm 生命周期脚本劫持 三个样本的攻击入口完全一致——在 `package.json` 中定义: ```json "scripts": { "preinstall": "node index.js" } ``` `preinstall` 钩子会在 npm 安装阶段自动执行,无需用户显式 import 或运行业务代码。对于前端组件、类型定义或规则组件这类包而言,安装阶段运行一个根目录大体积 JavaScript 文件是极不正常的信号。 ### 2. 混淆与解密机制 三个样本共享同一个核心恶意载荷,但外层包装参数不同。具体表现为: - 使用不同的 **ROT/Caesar 位移值** - 使用不同的 **AES-GCM key/iv/tag** 这使得基于外层包装 hash、固定 key 或固定 shift 的静态特征难以直接跨包复用。然而解密后的核心组件 hash 完全一致,包括: - **Bun 运行环境引导器**(源码变量名 `_b`):用于准备 Bun 运行环境的启动辅助模块 - **核心恶意载荷**(源码变量名 `_p`):包含完整恶意功能 ### 3. 完整攻击链 ``` npm install → preinstall → index.js → 多层混淆解密 → Bun 引导器 → 核心载荷 ``` ## 核心恶意载荷能力分析 经过完整还原,确认该恶意载荷具备以下能力: ### 信息窃取 - **GitHub Actions Runner 内存读取**:从 CI/CD 运行环境中提取敏感数据 - **多云凭据采集**:针对 AWS、Azure、GCP 等云服务商的凭据窃取 - **本地凭据采集**:从开发主机获取 SSH 密钥、API token 等敏感信息 ### 横向传播 - **GitHub API 外传与 dead-drop**:通过 GitHub API 进行数据外传,利用仓库作为 C2 通道 - **GitHub workflow 注入**:向受害仓库的 CI/CD 配置中注入恶意工作流 - **npm 自传播**:利用窃取的 npm token 发布恶意版本,实现供应链扩散 ### 持久化机制 - **Claude Code 持久化**:针对 AI 辅助编程工具的代码注入 - **VS Code 持久化**:通过扩展或配置实现 IDE 级别持久化 - **systemd / LaunchAgent 持久化**:在 Linux 和 macOS 系统中建立系统级持久化 ### 对抗能力 - **Harden-Runner / StepSecurity 对抗**:针对 GitHub Actions 安全加固工具的绕过 - **EDR / 安全产品探测**:检测并规避主流端点检测与响应系统 ## 潜在影响范围 从能力覆盖面分析,潜在受影响对象包括: 1. **开发者主机**:凭据窃取、持久化植入 2. **CI/CD Runner**:内存读取、workflow 注入 3. **构建容器**:环境变量泄露、恶意代码执行 4. **GitHub 仓库**:代码篡改、workflow 劫持 5. **GitHub Actions workflow**:注入恶意步骤 6. **npm 发布链路**:供应链污染扩散 7. **云环境凭据**:多云凭据批量窃取 ## 溯源分析 从代码结构、传播路径和能力组合来看,该恶意软件属于 **Shai-Hulud 恶意软件变体**。此前查找币安全团队曾发布过针对 Shai-Hulud 供应链投毒的分析报告,此次事件在技术架构和攻击手法上高度一致。 ## IOC 清单 ### 恶意包版本 - `@redhat-cloud-services/frontend-components-config@6.11.3` - `@redhat-cloud-services/types@3.6.1` - `@redhat-cloud-services/rule-components@4.7.2` - `@redhat-cloud-services/chrome@2.3.1` - `@redhat-cloud-services/chrome@2.3.2` - `@redhat-cloud-services/chrome@2.3.4` - `@redhat-cloud-services/frontend-components-translations@4.4.1` - `@redhat-cloud-services/frontend-components-translations@4.4.2` - `@redhat-cloud-services/frontend-components-translations@4.4.4` - `@redhat-cloud-services/vulnerabilities-client@2.1.8` - `@redhat-cloud-services/vulnerabilities-client@2.1.9` - `@redhat-cloud-services/vulnerabilities-client@2.1.11` ### 恶意文件 hash - `0c9c67ec40d5f23efa1ec3470d0ac88b4993ccc0e92be913fc29a337dfc4f060` - `d543bb3cdf1569c2b3d38c8a4081ed746cfe78bf3236c2302704d79ab7fa9558` - `aaf00d06baa3c679b82452c50014e9824b8874e9ca2d150f19095f8de19ba90f` ## 防护建议 ### 立即行动 1. **审计依赖**:检查项目中是否使用了上述恶意版本 2. **锁定版本**:在 `package-lock.json` 或 `yarn.lock` 中锁定可信版本 3. **检查 CI/CD 日志**:审查最近安装记录,确认是否触发恶意 preinstall ### 长期措施 1. **启用 npm audit**:定期执行依赖安全审计 2. **使用锁定文件**:确保依赖版本可追溯、可验证 3. **监控生命周期脚本**:对 preinstall/postinstall 等钩子保持警惕 4. **最小权限原则**:CI/CD token 和云凭据遵循最小权限配置 5. **启用 Harden-Runner**:为 GitHub Actions 启用安全加固 ## 总结 本次 Red Hat Cloud Services npm 包供应链投毒事件展示了攻击者针对开源生态的高阶攻击能力。通过篡改真实包版本、多层混淆、生命周期脚本劫持等手段,攻击者实现了从开发者主机到云环境的全面渗透链。查找币安全团队将持续监控此类威胁,并为用户提供实时预警与防护方案。 --- **本文由查找币安全团队整理发布**
在文章库中查看和回复