muchener's blogs

On Breaking SAML Be Whoever You Want to Be

字数统计: 1.6k阅读时长: 5 min
2017/05/18 Share

原文连接:https://www.owasp.org/images/2/28/Breaking_SAML_Be_Whoever_You_Want_to_Be_-_Juraj_Somorovsky+Christian_Mainka.pdf

翻译全:On-Breaking-SAML-Be-Whoever-You-Want-to-Be

打破SAML:成为任何你想成为的人

0 摘要

安全声明标记语言是一个被采用的语言,用于制作相关安全声明。它是开发联合身份部署和单点登录场景的关键组件。为了保护交换的SAML脚本工程的完整性和真实性,应用了XML签名标准。然而,签名验证算法比PKCS#7这样的传统签名格式复杂得多。因此,在弱对抗模式下,通过应用不同的XML签名特定攻击,可以成功地规避完整性保护。

在本文中,我们描述了对14个主要SAML框架的深入分析,并显示其中包括Salesforce,Shibboleth和IBM XS40 在内的其中11个具有关键的XML签名包装(XSW)漏洞。基于我们的分析,我们开发了一种用于XSW在SAML框架中的自动渗透测试工具。通过额外发现新的XSW变体证明了其可行性。我们提出了第一个分析这种攻击的框架,这是基于依赖方的两个组成部分之间的信息流。令人惊讶的是,这种分析还产生了有效和实用的对策。

1 介绍

安全声明标记语言(SAML)是一种基于XML的语言,用于制作关于主题的安全声明。SAML声明在WS-Security和基于REST的单点登录(SSO)场景中被用作安全令牌。主要软件供应商和开源项目都支持SAML,并被广泛部署。 由于其灵活性和广泛的支持,不断定义新的应用场景。

SAML协议 由于SAML断言包含关于主题的安全关键声明,因此这些声明的有效性必须经过认证。 根据标准,这应该通过使用XML签名来实现,该签名应该覆盖完整的SAML断言或包含它的XML文档(例如,SAML验证响应)。

然而,我们评估的大约80%的SAML框架可以通过用新的XML签名包装(XSW)攻击规避完整性保护来破坏。 这个令人惊讶的结果主要是由于两个事实:

  • 复杂签名算法:PKCS#7和OpenPGP之前的数字签名数据格式计算整个文档的单个散列值,签名简单地附加到文档中。XML签名标准要复杂得多。 特别是签名和签名内容的位置是可变的。因此,存在同一XML文档的多种排列。
  • 未指定的内部接口:大多数SAML框架将依赖方(即,Web服务或网站使用SAML声明)视为单个块,假设所有任务都具有共同的共同状态。然而,逻辑上,该块必须被细分为执行加密操作的签名验证模块(后面称为RPsig),以及处理SAML中包含的声明的SAML处理模块(稍后称为RPclaims)。 两个模块对声明有不同的看法,它们通常只交换一个关于签名有效性的布尔值。

贡献

在本文中,我们对14个SAML框架和系统进行了深入的分析。在此分析中,我们在其中的11个框架中发现了XSW漏洞鉴于SAML在实践中的重要性,这一结果令人震惊,特别是由于SSO框架可能会成为一个单一的攻击点。 它清楚地表明,SAML和XML签名背后的安全隐患尚未被理解。

第二,这些漏洞可以被攻击者所利用,方法远远少于基于传统网络加密技术的攻击:即使攻击者不控制网络也可能会成功。他不需要实时窃听,但可以利用那些SAML声明已过期的。单一签名的SAML足以完全危及SAML发行者/身份提供者。使用SSL/TLS加密SAML声明,从而防止对手通过拦截网络流量来学习声明,这也不利于:对手可能会在SAML发行人注册为普通客户,并可以使用自己的声明来冒充其他客户。

第三,我们给出了考虑到RPsig和RPclaim之间的接口的SAML框架的第一个模型。 这个模型给出了对SAML的成功攻击的明确定义。除了它的理论兴趣之外,它也使我们能够证明几个积极的结果。这些结果是新的,有助于解释为什么一些框架不容易受到我们的攻击,并就如何提高其他11个框架的安全性提供建议。

最后,我们展示XSW漏洞构成了一个重要而广泛的攻击向量。防范XSW攻击并不容易:因为与普遍的看法相反,即使是签署整个文件也不一定能够保护他们。要建立工作防御,需要更好地了解这个多功能的攻击类。 在研究过程中开发的一种专门用来测试XSW的工具将作为开放源码发布,以帮助您了解这一点。 通过在Salesforce SAML界面上发现一个新的攻击向量来证明其实用性,尽管已经应用了特定的应对措施。

责任公开

我们分析过程中发现的所有漏洞均报告给负责的安全小组。因此,在许多情况下,我们与他们密切合作,以补救发现的问题。

大纲

本文的其余部分安排如下。第2节给出了SAML的高级概述,第3节增加了细节。 调查的方法在第4节中进行了说明,详细的结果在第5节中进行了说明。在第6节中,我们介绍了第一个对SAML进行全面自动化的XSW渗透测试工具。 第7节进行正式分析,并得出两个对策。在第8节,我们讨论他们的实际可行性。 第9节概述了相关工作。在最后一节,我们总结并提出未来的研究方向。

图1:典型的单点登录方案:用户访问生成请求令牌的RP。 他将这个令牌重定向到IdP。 发出的令牌发送给用户并转发给RP。 即使通道由SSL / TLS保护,用户仍然可以看到令牌。

CATALOG
  1. 1. 打破SAML:成为任何你想成为的人
    1. 1.0.1. 0 摘要
    2. 1.0.2. 1 介绍
      1. 1.0.2.1. 贡献
      2. 1.0.2.2. 责任公开
      3. 1.0.2.3. 大纲