超危Golang XML解析器漏洞可导致SAML身份验证绕过

Posted 群智分析平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了超危Golang XML解析器漏洞可导致SAML身份验证绕过相关的知识,希望对你有一定的参考价值。

Mattermost公司近日与Golang协同披露了Go语言XML解析器中的三个超危漏洞。
这三个漏洞同时影响多个基于GoSAML实现,成功利用这些漏洞,攻击者可以完全绕过SAML身份验证,SAML是一种web身份验证标准,许多重要网站和服务使用该标准,简化使用XML的在线登录。
Mattermost公司披露的漏洞分别为:
Ø CVE-2020-29509Go encoding/xml中的XML属性不稳定,CVSS 3.1基准评分为9.8
Ø CVE-2020-29510Go encoding/xml中的XML指令不稳定,CVSS 3.1基准评分为9.8
Ø CVE-2020-29511Go encoding/xml中的XML元素不稳定,CVSS 3.1基准评分为9.8
XML解析器不保证完整性
这三个超危漏洞存在于Golang的XML语言解析器encoding/xml中,在编码和解码XML输入时,该解析器未返回可靠的结果。这意味着在使用该解析器编码和解码时,XML标记可能会返回不一致的和非预期的结果。
Mattermost公司的产品安全工程师Juho Nurminen指出,这三个漏洞密切相关,核心问题都是,恶意构造XML标记在Go的解码器和编码器实现之间的往返过程中发生变化。
Nurminen表示,如果应用程序处理XML,并且在处理XML时,解析至少前一轮解析和序列化的输出的标记,则不能再认为该解析的输出与上一轮的输出匹配。换句话说,通过Go的解码器和编码器传递XML并不能保留它的语义。
针对这些漏洞所做的部分修复之一表明,因这些漏洞影响,在XML解析过程中可能会出现不一致。
例如,<name>”将去掉冒号,同样,在序列化过程中,具有包含空值("")的属性的XML标记在序列化过程中将变成完全没有该属性的XML标记。
可能完全绕过SAML身份验证
乍一看,这似乎是一个微不足道的漏洞,但是Mattermost强调许多应用程序都期望语义完整性,这些漏洞可能会造成严重后果。
例如,攻击者可以诱使依赖于上述XML解析器的各种SAML实现绕过SAML身份验证。
Mattermost警告称,由于这些漏洞,基于GoSAML实现在许多情况下容易被攻击者篡改:通过向正确签名的SAML消息注入恶意标记,可以使其看起来仍然是正确签名,但更改其语义以传递与原始文档不同的标识。
如果任务至关重要的应用程序使用XML解析器,对SAML SSO系统的影响可能是权限提升或绕过身份验证,这取决于应用程序如何使用该脆弱的XML解析器。
解析器本身没有可用的补丁
值得注意的是,Go安全团队表示没有可用的补丁程序可以充分修复这些漏洞。
该团队还声明往返稳定性不是encoding/xml支持的安全属性,这使得单独的补丁不足以保证XML解析的可靠性。
但是,一些基于GoSAML项目已经发布了修复版本,例如:
Ø Dex IDP version 2.27.0
Ø github.com/crewjam/saml version 0.4.3
Ø github.com/russellhaering/gosaml2 version 0.6.0
此外,Mattermost提供了一个工具“xml-roundtrip-validator”,在将XML验证并入应用程序时,该工具可以作为一种解决方法。

作者:Ax Sharma
来源:Bleeping Computer
编译:猫冬

以上是关于超危Golang XML解析器漏洞可导致SAML身份验证绕过的主要内容,如果未能解决你的问题,请参考以下文章

中国蚁剑被曝XSS漏洞,可导致远程命令执行

漏洞预警 | PostgreSQL 设计缺陷可导致权限提升

服务器安全维护 linux系统漏洞可导致被提权

漏洞预警|PHP输入验证可导致XSS安全漏洞

TCP协议漏洞可导致网络流量被劫持

Dubbo爆出严重漏洞!可导致网站被控制数据泄露!附解决方案