@EricaHe
2016-03-08T00:44:31.000000Z
字数 2756
阅读 826
论文笔记
SSO
作者:Christian Mainka,Vladislav Mladenov,Florian Feldmann,Julian Krautwald,Jörg Schwenk
单位:Horst Görtz Institute for IT-Security, Bochum, Germany
定义:
SaaS(Software-as-a-Service)指一些抛弃本地部署方式,改为在云端提供服务的软件,可以通过互联网进行访问。
本文主要讨论的主题:
由于SaaS让数据存储到了云平台上,那如何建立安全的访问控制机制就成为了重要的议题。文章主要针对其中SaaS上的SSO认证框架——SAML(Security Assertion Markup Language)部署的安全性进行讨论。
首次验证(尚未获得Session ID):
再次验证:
由Session Management来从Session Cookie中获得用户信息,然后发给AAM
无论采用何种SSO机制,在SAML Assertion的过程中,一个SSO认证token中总有一些内容是固定的:
总而言之,token=(Identity, Freshness, Destination)。
Signature Exclusion:
token未要求对其进行签名,从而攻击者可以篡改其中的信息。
Certificate Faking:
由于SAML使用的是XML Signature standard,所以证书可以被加入到token中去,所以攻击者可以使用自己的密钥对token进行签名,然后将相对应的密钥对做成证书加进去,一起发给SP。
如果SP没有在验证之前,首先验证证书是否可信,则可能造成问题。
XML External Entity Attack:
攻击者可以将一个包含有DTD(Document Type Definition)的XML消息发送给应用(这个甚至不一定要是SAML token),有些有问题的应用就会去解析DTD,并执行其中的定义,此时攻击者就可以使用XML外部实体攻击获得其中的文件内容。
但是这种情况并不常见。
XSLT Attack:
XSLT(Extensible Stylesheet Language Transformation)可以将XML文件转换为其他格式的文件,且这个转换将在数字签名验证前执行。
这个的利用方式和上一种差不多,只不过这里要求发送的一定得是一个SAML token,虽然签名是否正确并不需要在意。
Replay Attack:
SP未对Freshness作校验,从而使得只要一个合法的token,无论在何时都能够登录SP。
XML Signature Wrapping:
当SSO认证和处理部分对一个token的解读不同时,攻击者就可以通过注入恶意数据来达成攻击。
在此例中,SSO Verificator利用Reference来找到相应的ID进行签名校验,而SSO Processor则自动处理它所获得的第一个token内容,从而使该token绕过了检测。
Token Recipient Confusion:
SP未能对Recipient参数进行适当的校验,使得一个在SA能够获得合法tA令牌的攻击者,可以将该令牌转发给Starget,从而获得进入的权限。
不过这个方式要求SA和Starget使用相同的IdP。
另外,作者还可以自己搭建一个SaaS-CP(Sbad),来获取在其上注册用户的发给他的token。
Certificate Injection
在测试的所有SaaS-CP中都开放有网络接口,其中一个能够导入证书。于是攻击者就可以通过构造CSRF攻击,向AAM模块导入恶意的证书,即攻击者拥有这张证书所对应的私钥,从而可以为任何token签名。CSRF攻击要求攻击者能够说服受害者去点击他所构造的链接。