DDOS防御专家-提供超强DDoS高防/CC防护/大流量清洗服务!
当前位置:主页 > DDOS防御 > 正文

海外高防ip_防御ddos收费_限时优惠

06-11 DDOS防御

海外高防ip_防御ddos收费_限时优惠

Duo实验室2018年2月27日凯尔比·路德维希Duo发现了影响多个实现的SAML漏洞这篇博客文章描述了一个影响基于SAML的单点登录(SSO)系统的新漏洞类。此漏洞允许具有已验证访问权限的攻击者诱骗SAML系统在不知道受害者用户密码的情况下以其他用户身份进行身份验证。Duo Labs,网站cc防御工具,Duo Security的高级研究团队,已经确定了受此缺陷影响的多家供应商:OneLogin-python saml-CVE-2017-11427OneLogin-ruby saml-CVE-2017-11428聪明-saml2 js-CVE-2017-11429OmniAuth SAML-CVE-2017-11430希伯勒斯-CVE-2018-0489双网网关-CVE-2018-7340我们建议依赖基于SAML的SSO更新任何受影响软件的个人修补此漏洞。如果您是运行Duo Network Gateway(DNG)的Duo Security客户,请参阅我们的产品安全咨询。SAML简短地回答安全断言标记语言SAML是单点登录系统中常用的标准。GregSeador写了一本关于SAML的很棒的教学指南,如果你不熟悉它,我强烈推荐它。为了引入此漏洞,最重要的概念是SAML响应对服务提供商(SP)意味着什么,以及如何处理它。响应处理有很多微妙之处,但简化版本通常看起来像:用户向身份提供者(IdP)进行身份验证,如Duo或GSuite,后者生成签名的SAML响应。然后,用户的浏览器将此响应转发给Slack或Github等SP。SP验证SAML响应签名。如果签名有效,SAML响应中的字符串标识符(例如NameID)将标识要认证的用户。一个真正简化的SAML响应可以类似于:https://idp.com/user@user.com一些表示断言签名的base64数据此示例省略了许多信息,但对于此漏洞来说,省略的信息并不太重要。上述XML blob中的两个基本元素是断言和签名元素。断言元素最终是说"嘿,我,身份提供者,对用户进行了身份验证user@user.com。"为该断言元素生成签名,并作为签名元素的一部分存储。签名元素,如果操作正确,应该防止修改NameID。由于SP可能使用NameID来确定应该对哪个用户进行身份验证,因此签名可防止攻击者使用NameID更改自己的断言。"攻击者@user.com"收件人"user@user.com。"如果攻击者可以修改NameID而不使签名无效,那就不好了(hint,hint)!XML Canononononicalizizization:拼写容易做起来难XML签名的下一个相关方面是XML规范化。XML规范化允许两个逻辑上等价的XML文档具有相同的字节表示形式。例如:一些文本a和一些文本这两个文档有不同的字节表示,但传递的信息相同(即它们在逻辑上是等价的)。规范化在签名之前应用于XML元素。这就防止了XML文档中实际上毫无意义的差异导致不同的数字签名。这是一个重要的点,因此我将在这里强调:多个不同但相似的XML文档可以具有相同的精确签名。这在很大程度上是好的,因为重要的差异是由规范化算法指定的。正如您在上面的toy SAML响应中所注意到的,CanonicalizationMethod指定在签署文档之前应用哪个规范化方法。XML签名规范中概述了两种算法,但实际中最常见的算法似乎是\(我将把它缩短为exc-c14n)。exc-c14n的一个变体具有标识符\WithComments。exc-c14n的这种变体没有省略注释,因此上面的两个XML文档不会有相同的规范表示。这两种算法之间的区别将在后面很重要。xmlapi:一棵树;多种方式造成此漏洞的原因之一是XML库(如Python的lxml或Ruby的REXML)的微妙且可以说是意外的行为。考虑以下XML元素NameID:克鲁德维格如果要从该元素中提取用户标识符,在Python中,可以执行以下操作:从defusedxml.lxml从字符串导入有效载荷="kludwig"data=fromstring(有效载荷)返回数据.text#应该返回"kludwig"有道理,对吧?text方法提取NameID元素的文本。现在,如果我把事情稍微调高一点,然后给这个元素添加一个注释,服务器防火墙,会发生什么情况:从defusedxml.lxml从字符串导入doc="klud假发"data=fromstring(有效载荷)返回数据.text#应该返回"kludwig"?如果你希望得到完全相同的结果,不管评论的增加,我认为你是在同一条船上的我和许多其他人。但是,lxml中的.text API返回klud!为什么?嗯,我认为lxml在这里所做的在技术上是正确的,尽管有点不直观。如果将XML文档视为树,则XML文档看起来像:元素:NameID|_文本:klud|_评论:评论?|_文字:假发而lxml只是在第一个文本节点结束后不读取文本。将其与未注释的节点进行比较,该节点将由以下内容表示:元素:NameID|_文本:克鲁德维格在本例中,在第一个文本节点处停止非常有意义!另一个表现出类似行为的XML解析库是Ruby的REXML。他们的get_text方法的文档提示了为什么这些XML API会出现这种行为:[get_text]返回第一个子文本节点(如果有),否则返回nil。此方法返回实际的文本节点,而不是字符串内容。如果所有的xmlapi都是这样的,那么在第一个子元素之后停止文本提取(虽然不是直观的)可能会很好。不幸的是,情况并非如此,有些XML库具有几乎相同的API,但处理文本提取的方式不同:进口xml.etree.ElementTree作为etdoc="klud假发"数据=从字符串中提取(有效载荷)返回数据.text#返回"kludwig"我还看到了一些不利用xmlapi的实现,但是通过提取节点第一个子节点的内部文本来手动执行文本提取。这只是相同子字符串文本提取行为的另一个路径。脆弱性因此,现在我们有了三个促成这一漏洞的因素:SAML响应包含标识身份验证用户的字符串。XML规范化(在大多数情况下)将删除签名验证过程中的注释,因此向SAML响应添加注释不会使签名无效。当存在注释时,XML文本提取只能返回XML元素中文本的子字符串。所以,作为有权访问帐户的攻击者user@user.com.evil.com,我可以修改自己的SAML断言以将NameID更改为user@user.com当由SP处理时,在之前的玩具SAML响应中添加了一个简单的七个字符,高防cdnwan,我们就得到了有效载荷:https://idp.com/user@user.com.邪恶网站一些表示断言签名的base64数据这对依赖SAML的服务有何影响?有趣的是:变化很大!这种行为的存在并不是很好,但并不总是可以利用的。SAML idp和SPs通常是非常可配置的,因此有很大的空间来增加或减少影响。例如,与允许任意字符串作为用户标识符的SPs相比,使用电子邮件地址并根据白名单验证其域的SAML sp不太可能受到攻击。在IdP方面,公开允许用户注册帐户是增加这个问题影响的一个方法。手动用户配置过程可能会为进入添加一个障碍,使攻击变得更加不可行。补救这个问题的补救在某种程度上取决于您与SAML的关系。对于Duo软件的用户Duo在1.2.10版本中发布了Duo网络网关的更新。如果您使用DNG作为SAML服务提供商,cc防御最好用的软件,并且不是1.2.10或更高版本(在编写本文时,1.2.10是最新版本),我们建议升级。在Duo的产品安全咨询(PSA)中了解有关此漏洞的更多信息。如果您运行或维护身份提供者或服务提供者最好的补救方法是确保您的SAML处理库不受此问题的影响。我们发现了几个SAML库,它们要么利用了这些不直观的xmlapi,防火墙怎么防御ddos,要么进行了错误的手动文本提取,但我确信还有更多的库不能很好地处理XML节点中的注释。另一种可能的补救方法是默认使用规范化算法,例如\WithComments在规范化过程中不会忽略注释。

版权保护: 本文由 DDOS防御专家 原创,转载请保留链接: http://www.ddosgb.com/ddos1/60430.html

DDoS防御专家简介孤之剑
国内资深白帽子二十人组成员,前BAT资深网络安全工程师,知名网络安全站点板块大神,每年提交Google及微软漏洞,原sina微博负载插件开发者,现在整体防御复合攻击长期接受1-4.7T攻击,CC防护自主开发指纹识别系统,可以做到99.9999%的无敌防御。
  • 文章总数
  • 8081636访问次数
  • 建站天数

    DDOS防御

    ddos防御

    cc防护

    web安全

    高防服务器

    高防cdn


    QQ客服

    400-0797-119

    X