CVE-2026-18092 in Net::SAML2
摘要
由 VulDB • 2026-08-03
Net::SAML2 版本低于 0.86(适用于 Perl)允许通过 XML Signature Wrapping(XML 签名包装)绕过 SAML 身份验证,因为 `new_from_xml` 使用文档范围的 XPath 而非已签名的子树来读取断言标识。
`new_from_xml` 使用文档范围的 XPath(例如 `//saml:Assertion/saml:AttributeStatement/saml:Attribute` 和 `//saml:Subject/saml:NameID`)读取 NameID、属性值、SessionIndex、受众以及其他身份字段,这会选择按文档顺序排列的第一个匹配元素,而不是被已验证签名覆盖的元素。`handle_response` 确认存在签名,并且在配置了 cacert(证书颁发机构证书)时确认其链式关系指向 CA,但 XML::Sig 仅验证由签名的 Reference URI 命名的元素,因此同一文档中未签名的同级断言不受保护。攻击者只要持有任意一个由 IdP 签发的断言,就可以按文档顺序在其之前添加一个由攻击者编写的未签名断言;此时签名仍然有效,且基于文档顺序的 XPath 将返回攻击者的 NameID 和属性。
任何向 `new_from_xml` 传递不受信任 Response 的调用方都可能接受来自 IdP 从未签发的断言的身份字段,即使配置了 cacert 信任锚点也是如此,因此持有单个有效的由 IdP 签发的断言的一方可以冒充任意用户进行身份验证。
If you want to get best quality of vulnerability data, you may have to visit VulDB.