【缝隙公告】Go XML解析器多个安全缝隙
颁布功夫 2020-12-150x00 缝隙概述
产品名称 | 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/



京公网安备11010802024551号