突发新闻低
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)并未经过上述安全机制处理。攻击者可通过以下方式利用此漏洞:
- 在公开或私有 Git 仓库中托管恶意软件包。
- 通过拼写劫持或社会工程诱导开发者引入恶意依赖。
- 在安装过程中执行任意代码,危害构建环境。
影响分析
该漏洞可能导致组织面临以下风险:
- 针对 CI/CD 管道的供应链攻击。
- 通过受感染依赖进行数据泄露或后门植入。
- 因无意中分发恶意代码而造成声誉损害。
Git 依赖在企业和开源项目中广泛使用,进一步放大了风险。依赖 Git 托管软件包的高知名度库或工具可能无意中传播威胁。
建议措施
安全团队和开发者应采取以下措施:
- 审计
package.json文件,检查 Git 依赖,并尽可能替换为注册表托管的软件包。 - 部署依赖扫描工具(如 GitHub Dependabot、Snyk),检测恶意 Git 引用。
- 对 Git 依赖实施严格代码审查策略,包括手动验证仓库来源。
- 安装时使用 NPM 的
--omit=dev标志,排除可能隐藏风险的开发依赖。 - 监控构建系统中的异常行为,如意外的网络请求或文件修改。
后续步骤
NPM 尚未发布针对此问题的补丁或缓解措施。组织应采用 纵深防御策略,包括:
- 隔离构建环境,限制受感染依赖的影响。
- 生成软件物料清单(SBOM),跟踪依赖来源。
- 在依赖管理中应用零信任原则,默认视所有外部代码为不可信。
此次发现凸显了保障开源供应链安全的持续警惕性需求,尤其是在攻击者不断调整策略、利用被忽视的攻击面之际。