突发新闻

NPM Shai-Hulud 供应链防护被绕过:Git 依赖漏洞分析

1分钟阅读来源: BleepingComputer

安全研究揭示 NPM 供应链防护漏洞,攻击者可通过 Git 依赖绕过 Shai-Hulud 安全机制,威胁 JavaScript 生态系统安全。

NPM Shai-Hulud 安全机制被 Git 依赖绕过

安全研究人员近期发现 NPM 供应链防护体系中存在严重漏洞,攻击者可通过 Git 依赖 绕过 Shai-Hulud 攻击 后部署的安全防护措施。该发现凸显了 JavaScript 生态系统依赖管理中持续存在的风险。

核心发现

2021 年,NPM 在 Shai-Hulud 供应链攻击 后强化了安全控制措施,该攻击曾利用恶意软件包危害下游应用。然而,研究人员近期证明,攻击者可通过 基于 Git 的依赖(即直接托管于 Git 仓库而非 NPM 注册表的软件包)绕过这些防护机制。

与传统 NPM 软件包不同,Git 依赖不受相同安全扫描、签名验证或元数据校验机制的约束。这一监管盲区使攻击者能够:

  • 注入恶意代码 而不被检测。
  • 利用开源项目的信任关系
  • 绕过 NPM 自动化安全检查,包括软件包签名和来源验证。

技术细节

NPM 在 Shai-Hulud 攻击后部署的防护措施包括:

  • 软件包签名:验证发布者身份。
  • 来源验证:确认软件包来源。
  • 自动恶意软件扫描:适用于注册表托管的软件包。

然而,Git 依赖(通过 package.json 中的 URL 引用,如 git+https://github.com/user/repo.git)并未经过上述安全机制处理。攻击者可通过以下方式利用此漏洞:

  1. 在公开或私有 Git 仓库中托管恶意软件包
  2. 通过拼写劫持或社会工程诱导开发者引入恶意依赖
  3. 在安装过程中执行任意代码,危害构建环境。

影响分析

该漏洞可能导致组织面临以下风险:

  • 针对 CI/CD 管道的供应链攻击
  • 通过受感染依赖进行数据泄露或后门植入
  • 因无意中分发恶意代码而造成声誉损害

Git 依赖在企业和开源项目中广泛使用,进一步放大了风险。依赖 Git 托管软件包的高知名度库或工具可能无意中传播威胁。

建议措施

安全团队和开发者应采取以下措施:

  1. 审计 package.json 文件,检查 Git 依赖,并尽可能替换为注册表托管的软件包。
  2. 部署依赖扫描工具(如 GitHub Dependabot、Snyk),检测恶意 Git 引用。
  3. 对 Git 依赖实施严格代码审查策略,包括手动验证仓库来源。
  4. 安装时使用 NPM 的 --omit=dev 标志,排除可能隐藏风险的开发依赖。
  5. 监控构建系统中的异常行为,如意外的网络请求或文件修改。

后续步骤

NPM 尚未发布针对此问题的补丁或缓解措施。组织应采用 纵深防御策略,包括:

  • 隔离构建环境,限制受感染依赖的影响。
  • 生成软件物料清单(SBOM),跟踪依赖来源。
  • 在依赖管理中应用零信任原则,默认视所有外部代码为不可信。

此次发现凸显了保障开源供应链安全的持续警惕性需求,尤其是在攻击者不断调整策略、利用被忽视的攻击面之际。

分享

TwitterLinkedIn