漏洞通告Go XML解析器多个安全漏洞
Posted 维他命安全
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了漏洞通告Go XML解析器多个安全漏洞相关的知识,希望对你有一定的参考价值。
0x00 漏洞概述
产品名称 |
CVE ID |
类 型 |
漏洞等级 |
远程利用 |
encoding/xml |
CVE-2020-29509 |
身份验证绕过、权限提升 |
严重 |
是 |
CVE-2020-29510 |
身份验证绕过、权限提升 |
严重 |
是 |
|
CVE-2020-29511 |
身份验证绕过、权限提升 |
严重 |
是 |
0x01 漏洞详情
Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Package xml 实现了一个理解 XML 名称空间的简单 XML 1.0 分析器。
近日,Mattermost与Go协作披露了Go的XML解析器中的3个严重漏洞(CVE-2020-29509、CVE-2020-29510和CVE-2020-29511)。这些漏洞存在于Go的Encoding/xml包中,CVSS评分均为9.8。
由于xml.Decoder和xml.Encoder往返引起的变异可能会导致应用程序(如SAML 和 XML-DSig)错误或决策冲突。攻击者可利用这些漏洞绕过或篡改基于Go的SAML的身份验证。(SAML为安全声明标记语言,是一种Web认证标准,被多个著名的网站和服务用于简化使用XML的网上登录。)
encoding/xml中的XML属性不稳定(CVE-2020-29509)
由于encoding/xml包在标记化往返过程中无法正确保留属性名称空间前缀的语义,使用encoding/xml进行编码和解码可以更改名称空间及恶意构建的XML属性的本地名称。
受影响的SAML implementation可以将SAML声明解释为已签名,但由于签名验证和数据访问之间的名称空间突变,因此可以继续从同一文档的未签名部分读取值,攻击者可以利用此漏洞绕过SAML身份验证或提升权限。
影响范围:
Go所有版本中的encoding/xml包
encoding/xml中的指令不稳定(CVE-2020-29510)
由于encoding/xml包在标记化往返过程中无法正确保留指令的语义,使用encoding/xml进行编码和解码可以根据恶意的xml指令引入新的结构。
受影响的SAML implementation可以将SAML声明解释为已签名,但是由于签名验证和数据访问之间的结构变异,因此可以继续从同一文档的未签名部分读取值,攻击者可以利用此漏洞绕过SAML身份验证或提升权限。
影响范围:
Go 1.15及之前版本中的encoding/xml包
encoding/xml中的XML元素不稳定(CVE-2020-29511)
由于encoding/xml包在标记化往返过程中无法正确保留元素名称空间前缀的语义,使用encoding/xml进行编码和解码可以更改名称空间及恶意构建的XML元素的本地名称。
受影响的SAML implementation可以将SAML声明解释为已签名,但是由于签名验证和数据访问之间的名称空间突变,因此可以继续从同一文档的未签名部分读取值,攻击者可以利用此漏洞绕过SAML身份验证或提升权限。
影响范围:
Go所有版本中的encoding/xml包
0x02 处置建议
目前Go安全团队尚未发布漏洞的补丁程序,但已经单独为某些基于Go的SAML项目发布了固定版本。
固定版本 |
链接 |
Dex IDP版本2.27.0 |
https://go-review.googlesource.com/c/go/+/277892/ |
saml版本0.4.3-0.4.5 |
https://github.com/crewjam/saml/releases |
gosaml2版本0.6.0 |
https://github.com/russellhaering/gosaml2/tags |
xml-roundtrip-validator工具(临时解决方案) |
https://github.com/mattermost/xml-roundtrip-validator |
临时解决方法:
xml-roundtrip-validator工具可以检测XML中的不稳定构造,包括不稳定的属性名称空间前缀、不稳定指令和不稳定元素名称空间前缀。在调用验证工具时,如果验证工具返回错误,则会阻止这些漏洞在应用程序中被利用。
0x03 参考链接
https://github.com/mattermost/xml-roundtrip-validator/blob/master/advisories/unstable-attributes.md
https://www.bleepingcomputer.com/news/security/critical-golang-xml-parser-bugs-can-cause-saml-authentication-bypass/
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-29509
0x04 时间线
2020-12-13 Go发布安全公告
2020-12-15 VSRC发布安全通告
0x05 附录
CVSS评分标准官网:http://www.first.org/cvss/
以上是关于漏洞通告Go XML解析器多个安全漏洞的主要内容,如果未能解决你的问题,请参考以下文章
超危Golang XML解析器漏洞可导致SAML身份验证绕过
漏洞通告WebSphere XML外部实体注入(XXE)漏洞(CVE-2020-4643)处置手册
安全风险通告SaltStack漏洞搭配可远程命令执行,SaltStack多个高危漏洞安全风险通告
漏洞情报|Nexus Repository Manager 3 XML外部实体注入漏洞风险通告(CVE-2020-29436)