CVE-2025-66578CVE-2025-66578是xmlseclibs库中的一个身份验证绕过漏洞。xmlseclibs是一个用PHP编写的用于处理XML加密和签名的开源库,广泛应用于需要XML数字签名验证的应用程序中。该漏洞存在于libxml2规范化处理过程中,当对无效的XML输入调用libxml2的规范化功能时,可能会返回空字符串而不是规范化的节点。xmlseclibs随后会对此空字符串计算DigestValue,错误地将其视为规范化成功的结果。这一缺陷允许攻击者构造特殊的XML文档,通过使规范化过程返回空字符串,然后替换为计算空字符串摘要值的签名,从而绕过签名验证机制,成功通过身份验证。该漏洞影响xmlseclibs 3.1.3及之前版本,已在3.1.4版本中修复。由于该库常用于Web服务的身份验证和授权场景,漏洞可能对使用该库进行XML签名验证的系统造成严重影响。
该漏洞的核心问题在于xmlseclibs库对libxml2规范化失败情况的处理不当。在XML签名验证过程中,系统需要计算引用元素的摘要值并与签名中的DigestValue进行比对。正常流程中,规范化函数会对XML节点进行规范化处理后返回结果。但在特定情况下,当libxml2对无效XML进行规范化时,会返回空字符串而非抛出异常或返回nil。xmlseclibs在接收到空字符串后,将其作为有效的规范化结果继续执行后续的摘要计算。这意味着攻击者可以构造一个特殊的XML文档,该文档在规范化时返回空字符串,然后攻击者只需将签名中的DigestValue替换为该空字符串的SHA-256哈希值,即可通过验证。攻击者利用此漏洞无需特殊权限,只需能够向目标系统提交精心构造的XML数据即可实现身份验证绕过。此漏洞的利用前提是目标系统使用xmlseclibs进行XML签名验证,且攻击者能够控制待验证的XML内容。