CVE-2024-32962
由于签名验证不当导致的 XML 签名验证绕过 / 签名欺骗
- 已发布
- 2024年5月2日
- 已更新
- 2025年2月13日
- 分配 CNA
- GitHub_M
- 观察到的证据
- 2026年8月8日
初级CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N低 · 未来 30 天
- 百分位
- 55.7%
- 型号日期
- 2026年9月21日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
xml-crypto 是一个用于 Node.js 的 XML 数字签名和加密库。在受影响版本中,默认配置不检查签名者的授权,仅按照 w3 xmldsig-core-20080610 规范第 3.2.2 节检查签名的有效性。因此,在没有额外验证步骤的情况下,默认配置允许恶意行为者重新签名 XML 文档,将证书放入 `<KeyInfo />` 元素,并通过 `xml-crypto` 的默认验证检查。结果是 `xml-crypto` 默认信任通过数字签名 XML 文档的 `<KeyInfo />` 提供的任何证书。即使库被配置为使用特定证书(`publicCert`)进行签名验证,`xml-crypto` 也倾向于使用通过数字签名 XML 文档的 `<KeyInfo />` 提供的任何证书。攻击者可以通过修改 XML 文档并将现有签名替换为使用恶意私钥(由攻击者创建)生成的签名,并将该私钥的证书附加到 `<KeyInfo />` 元素,从而伪造签名验证。此漏洞是 `4.0.0` 中通过 pull request 301 / commit `c2b83f98` 引入的更改的组合,并已在版本 6.0.0 中通过 pull request 445 / commit `21201723d` 解决。建议用户升级。无法升级的用户可以在接受验证结果之前,将通过 `getCertFromKeyInfo` 提取的证书与受信任的证书进行核对,或者将 `xml-crypto` 的 `getCertFromKeyInfo` 设置为 `() => undefined`,强制 `xml-crypto` 使用显式配置的 `publicCert` 或 `privateKey` 进行签名验证。
来源
1模拟利用CVE-2024-32962的攻击,伪造SAML消息并获取未授权权限,展示该漏洞的影响。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。