有效证书来自失窃账号:攻击者如何绕过npm的最后信任信号

2024年5月19日,633个恶意npm包版本成功通过了Sigstore provenance验证。这些恶意包之所以被系统放行,并非验证机制本身存在漏洞,而是攻击者从被攻破的维护者账号生成了有效的签名证书。Sigstore按照设计运行——它验证了包在CI环境中构建,确认了证书的有效颁发,但“信任”的根源——维护者账号——已经不在合法所有者手中。

npm作为全球最大的JavaScript包生态,其安全模型近年来一直在加固。Sigstore提供的provenance(来源)验证被视作软件供应链中的最后一道信任信号,它通过绑定构建环境与数字签名来证明一个包确实来自其声称的维护者。然而,本次攻击表明:当账号凭证被窃取,证书链上的所有验证都可以“正常通过”,因为攻击者掌握着签发证书所需要的身份认证。

Sigstore provenance验证的工作原理与被绕过的“信任锚”

Sigstore是一个用于软件签名的开源标准,它整合了证书颁发机构(CA)、透明度日志和代码签名工具。在npm的集成中,当一个包通过CI流水线(如GitHub Actions)构建时,Sigstore会向构建环境颁发一个临时证书,该证书记录了构建的来源信息。接收包的客户端或注册表可以验证证书是否由Sigstore签发、构建环境是否可信,从而判断包的真实性。

多多金蛋
有效证书来自失窃账号:攻击者如何绕过npm的最后信任信号 -

阿逸
阿逸
文章: 1601

发表回复