超危Golang XML解析器漏洞可导致SAML身份验证绕过 – 作者:偶然路过的围观群众

Mattermost公司近日与Golang协同披露了Go语言XML解析器中的三个超危漏洞。

这三个漏洞同时影响多个基于Go的SAML实现,成功利用这些漏洞,攻击者可以完全绕过SAML身份验证,SAML是一种web身份验证标准,许多重要网站和服务使用该标准,简化使用XML的在线登录。

Mattermost公司披露的漏洞分别为:

  • CVE-2020-29509:Go encoding/xml中的XML属性不稳定,CVSS 3.1基准评分为9.8;
  • CVE-2020-29510:Go encoding/xml中的XML指令不稳定,CVSS 3.1基准评分为9.8;
  • CVE-2020-29511:Go 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警告称,由于这些漏洞,基于Go的SAML实现在许多情况下容易被攻击者篡改:通过向正确签名的SAML消息注入恶意标记,可以使其看起来仍然是正确签名,但更改其语义以传递与原始文档不同的标识。

如果任务至关重要的应用程序使用XML解析器,对SAML SSO系统的影响可能是权限提升或绕过身份验证,这取决于应用程序如何使用该脆弱的XML解析器。

解析器本身没有可用的补丁

值得注意的是,Go安全团队表示没有可用的补丁程序可以充分修复这些漏洞。

该团队还声明往返稳定性不是encoding/xml支持的安全属性,这使得单独的补丁不足以保证XML解析的可靠性。

但是,一些基于Go的SAML项目已经发布了修复版本,例如:

  • Dex IDP version 2.27.0
  • com/crewjam/saml version 0.4.3
  • com/russellhaering/gosaml2 version 0.6.0

此外,Mattermost提供了一个工具“xml-roundtrip-validator”,在将XML验证并入应用程序时,该工具可以作为一种解决方法。

————————————————————————————————————-

作者:Ax Sharma
来源:Bleeping Computer

来源:freebuf.com 2020-12-15 16:46:03 by: 偶然路过的围观群众

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论