Ruby-saml 因Libxml2规范化错误导致摘要/签名验证被绕过

本文详细介绍了CVE-2025-66568漏洞,该漏洞存在于ruby-saml库(版本≤1.12.4)中,由于依赖的libxml2在处理无效XML输入时返回空字符串,导致数字签名和摘要验证可被绕过,从而实现身份验证绕过攻击。

Ruby-saml 允许通过Libxml2规范化错误绕过摘要/签名验证

平台

  • GitHub Copilot

  • GitHub Spark

  • GitHub Models

  • GitHub Advanced Security

  • Actions

  • Codespaces

  • Code Review

  • Discussions

  • Code Search

漏洞详情

  • bundler
  • ruby-saml (RubyGems)

受影响的版本 < 1.18.0

已修复的版本 1.18.0

描述

摘要 Ruby-saml 在 1.12.4 及之前版本中存在一个身份验证绕过漏洞,该漏洞源于 Nokogiri 用于文档转换的 libxml2 规范化处理过程中的一个问题。这使得攻击者能够执行签名包装攻击。该漏洞不影响 1.18.0 版本。

详情 当对无效的 XML 输入调用 libxml2 的规范化功能时,它可能返回一个空字符串,而不是一个规范化的节点。然后,ruby-saml 继续基于这个空字符串计算 DigestValue,仿佛规范化已成功完成。

影响

  • 摘要绕过:通过精心构造导致规范化产生空字符串的输入,攻击者可以操纵验证过程,使其错误地通过。
  • 基于空规范形式的签名重放:如果一个空字符串曾经被签名过(例如,在先前的交互中或通过配置错误的流程),那么该签名有可能被重放以绕过身份验证。

参考

  • GHSA-x4h9-gwv3-r4m4
  • SAML-Toolkits/ruby-saml@acac9e9

严重程度

关键 9.3

CVSS v4 基础指标 可利用性指标

  • 攻击向量:网络
  • 攻击复杂度:低
  • 攻击要求:无
  • 所需权限:无
  • 用户交互:无

脆弱系统影响指标

  • 机密性:高
  • 完整性:高
  • 可用性:无

后续系统影响指标

  • 机密性:无
  • 完整性:无
  • 可用性:无

CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

弱点

  • 弱点:CWE-347
  • 说明:不正确的加密签名验证 - 产品未验证或错误地验证了数据的加密签名。

CVE ID CVE-2025-66568

GHSA ID GHSA-x4h9-gwv3-r4m4

源代码 SAML-Toolkits/ruby-saml

致谢

  • d0ge (报告者)
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计