紧急预警!Samlify SSO 签名绕过漏洞(CVE-2025-47949)解析与防御指南​

admin 2025年5月28日15:35:24评论12 views字数 1459阅读4分51秒阅读模式

引言

近日,Node.js生态中广泛使用的SAML单点登录库Samlify曝出超危漏洞CVE-2025-47949(CVSS v4.0评分9.9),攻击者可通过构造恶意SAML响应绕过身份验证,甚至直接获取管理员权限!这一漏洞已引发全球安全团队高度关注。本文将深度剖析漏洞原理、攻击手法及防御方案,帮助企业及时应对风险。

一、漏洞本质:XML签名包装攻击(XSW)

SAML协议依赖XML数字签名确保身份断言(Assertion)的完整性。签名机制的核心在于<ds:Reference>元素中的URI属性,它指定了签名覆盖的XML元素(如#AssertionID123)。然而,Samlify在解析SAML响应时存在逻辑缺陷:

紧急预警!Samlify SSO 签名绕过漏洞(CVE-2025-47949)解析与防御指南​

签名验证与数据绑定分离:即使签名验证通过,Samlify未严格限定仅使用被签名覆盖的Assertion,而是可能错误提取未经验证的恶意Assertion。

多Assertion处理漏洞:若响应中包含多个Assertion(如攻击者注入的未签名Assertion),Samlify可能通过宽松的XPath查询(如//saml:Assertion)选择错误节点,导致身份决策被劫持。

攻击示例:

<samlp:ResponseID="ResponseID1">  <ds:Signature>    <!-- 合法签名仅覆盖AssertionID_Original -->    <ds:ReferenceURI="#AssertionID_Original"/>  </ds:Signature>  <saml:AssertionID="AssertionID_Original">普通用户数据</saml:Assertion>  <saml:AssertionID="AssertionID_Malicious">管理员用户数据(未签名)</saml:Assertion></samlp:Response>

攻击者注入恶意Assertion后,Samlify可能误选AssertionID_Malicious作为认证依据。

二、影响范围与利用场景

受影响版本:Samlify 2.10.0之前的所有版本。

攻击成本:低。攻击者只需获取一次合法SAML响应并构造恶意断言,即可绕过认证。

危害后果:

非授权用户登录高权限账户(如管理员)。

企业关键系统(如OA、CRM)遭入侵,数据泄露风险激增。

三、修复方案与纵深防御

1. 紧急升级

立即升级至Samlify 2.10.0+版本。该版本通过以下改进彻底修复漏洞:

严格绑定签名与Assertion:仅允许使用签名中URI明确指定的Assertion。

拒绝多Assertion响应:若响应包含未签名Assertion,直接视为无效。

2. 配置强化

强制Assertion签名:配置SP(服务提供商)仅接受签名后的Assertion,而非仅验证Response签名。

校验Issuer与Audience:确保Assertion的颁发者(Issuer)和受众(Audience)符合预期,防止跨租户攻击。

3. 监控与应急

日志审计:监控SAML响应中的Assertion数量、签名范围异常,以及频繁认证失败事件。

渗透测试:模拟XSW攻击,验证修复有效性。

4. 通用安全实践

HTTPS全链路加密:防止SAML响应在传输中被篡改。

最小权限原则:限制SAML断言授予的权限,降低横向渗透风险

原文始发于微信公众号(云梦安全):紧急预警!Samlify SSO 签名绕过漏洞(CVE-2025-47949)解析与防御指南​

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月28日15:35:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   紧急预警!Samlify SSO 签名绕过漏洞(CVE-2025-47949)解析与防御指南​https://cn-sec.com/archives/4107155.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息