CVE-2025-66568CVE-2025-66568是ruby-saml库中的一个严重安全漏洞,该库用于实现SAML授权的客户端功能。漏洞存在于libxml2规范化过程与Nokogiri文档转换的交互中,允许攻击者通过签名包装攻击(Signature Wrapping Attack)绕过身份验证机制。受影响版本从最初版本到1.12.4均存在此问题。攻击者利用libxml2对无效XML输入进行规范化时可能返回空字符串的缺陷,使得ruby-saml在计算DigestValue时使用空字符串而非规范化的节点,从而绕过签名验证。此漏洞CVSS评分高达9.1,属于严重级别,对系统机密性和完整性造成严重影响。该漏洞由GitHub安全团队发现并报告,已在1.18.0版本中修复。
该漏洞的根本原因在于ruby-saml库在处理XML签名验证时对libxml2规范化过程的错误处理。当Nokogiri使用libxml2对SAML响应进行规范化转换时,如果输入XML格式无效或经过特殊构造,libxml2的C14N(Canonical XML)函数可能返回空字符串而不是规范化的XML节点。ruby-saml在计算签名摘要值(DigestValue)时,会对这个空字符串进行计算,就好像规范化操作成功完成了一样。攻击者可以利用XML签名包装技术,在保持签名有效的情况下修改SAML断言的实际内容。具体来说,攻击者可以在XML结构中插入额外的元素或修改命名空间,使得规范化过程产生意外结果,从而绕过签名验证。这允许攻击者伪造任意用户的身份认证信息,实现未授权访问。攻击者只需构造特制的SAML响应即可利用此漏洞,无需事先获取任何有效凭据。