【误差通告】Go XML剖析器多个清静误差

宣布时间 2020-12-15

0x00 误差概述

产品名称

CVE ID

类 型

误差品级

远程使用

encoding/xml

CVE-2020-29509

身份验证绕过、权限提升

严重

CVE-2020-29510

身份验证绕过、权限提升

严重

CVE-2020-29511

身份验证绕过、权限提升

严重

0x01 误差详情

 

image.png

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/

image.png