以任何身份登录:通过解析器差异绕过SAML单点登录认证

以任何身份登录:通过解析器差异绕过SAML单点登录认证

💡 原文英文,约2800词,阅读约需11分钟。
📝

内容提要

在ruby-saml 1.17.0及之前版本中发现了严重的身份验证绕过漏洞(CVE-2025-25291和CVE-2025-25292),攻击者可利用有效签名伪造SAML断言,冒充任意用户。建议用户更新至1.18.0版本并检查依赖库。GitHub和GitLab已被通知并采取措施。

🎯

关键要点

  • 在ruby-saml 1.17.0及之前版本中发现了严重的身份验证绕过漏洞(CVE-2025-25291和CVE-2025-25292)。
  • 攻击者可以利用有效签名伪造SAML断言,冒充任意用户。
  • 建议用户更新至1.18.0版本并检查依赖库。
  • GitHub和GitLab已被通知并采取措施以保护用户。
  • ruby-saml库在单点登录(SSO)中被广泛使用,GitHub曾在2014年前使用该库。
  • GitHub因安全漏洞评估决定重新考虑使用ruby-saml。
  • 发现ruby-saml使用REXML和Nokogiri两个不同的XML解析器,可能导致身份验证绕过。
  • 解析器差异可能导致不同解析器对同一输入的不同解释,增加了安全风险。
  • 发现身份验证绕过的过程包括四个阶段:发现解析器差异、验证是否可被利用、找到实际的解析器差异、利用解析器差异创建完整的攻击。
  • SAML响应用于传输用户信息,必须进行签名验证以防止篡改。
  • ruby-saml的验证过程存在问题,导致攻击者可以伪造断言并冒充其他用户。
  • 建议检查SAML响应中的Nokogiri解析错误以防止部分已知的攻击。
  • 没有可靠的妥协指标,建议监控可疑的SAML登录活动。
  • SAML和XML签名的实现复杂,遵循规范并不一定能构建安全的实现。
  • 依赖两个不同解析器的安全上下文可能会导致错误和安全漏洞。
  • ruby-saml库的初步修复并未移除任何XML解析器,未来可能会进行重大版本更新。
  • 用户应确保更新到最新版本1.18.0,以修复已知漏洞。

延伸问答

ruby-saml库中的身份验证绕过漏洞是什么?

ruby-saml库在1.17.0及之前版本中发现了身份验证绕过漏洞,攻击者可以伪造SAML断言,冒充任意用户。

如何防止ruby-saml中的身份验证绕过攻击?

建议用户更新至ruby-saml的1.18.0版本,并检查相关依赖库以修复已知漏洞。

为什么ruby-saml使用两个不同的XML解析器?

ruby-saml使用REXML和Nokogiri两个解析器,可能导致解析差异,从而增加安全风险。

SAML响应中需要进行什么验证?

SAML响应中的用户信息必须进行签名验证,以防止篡改和确保信息的完整性。

ruby-saml的初步修复措施是什么?

初步修复措施并未移除任何XML解析器,未来可能会进行重大版本更新以增强安全性。

如何监控SAML登录活动以防止攻击?

建议监控可疑的SAML登录活动,特别是来自不符合用户预期位置的IP地址。

➡️

继续阅读