¡¾Îó²îͨ¸æ¡¿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Çå¾²ÍŶÓÉÐδÐû²¼Îó²îµÄ²¹¶¡³ÌÐò£¬£¬£¬£¬£¬£¬µ«ÒѾµ¥¶ÀΪijЩ»ùÓÚ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ÖеIJ»Îȹ̽ṹ£¬£¬£¬£¬£¬£¬°üÀ¨²»Îȹ̵ÄÊôÐÔÃû³Æ¿Õ¼äǰ׺¡¢²»ÎȹÌÖ¸ÁîºÍ²»ÎȹÌÔªËØÃû³Æ¿Õ¼äǰ׺¡£¡£¡£¡£¡£¡£¡£ÔÚŲÓÃÑéÖ¤¹¤¾ßʱ£¬£¬£¬£¬£¬£¬ÈôÊÇÑéÖ¤¹¤¾ß·µ»Ø¹ýʧ£¬£¬£¬£¬£¬£¬Ôò»á×èÖ¹ÕâЩÎó²îÔÚÓ¦ÓóÌÐòÖб»Ê¹Óᣡ£¡£¡£¡£¡£¡£
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ºÅ