PythonÔ¶³Ì´úÂëÖ´ÐÐÎó²î£¨CVE-2021-3177£©
Ðû²¼Ê±¼ä 2021-02-240x00 Îó²î¸ÅÊö
CVE ID | CVE-2021-3177 | ʱ ¼ä | 2021-02-24 |
Àà ÐÍ | RCE | µÈ ¼¶ | ÑÏÖØ |
Ô¶³ÌʹÓà | ÊÇ | Ó°Ïì¹æÄ£ | Python 3.x- 3.9.1 |
0x01 Îó²îÏêÇé
PythonÊÇÄ¿½ñ×îÊܽӴýµÄ³ÌÐòÉè¼ÆÓïÑÔÖ®Ò»£¬£¬£¬ËüÌṩÁ˸ßЧµÄ¸ß¼¶Êý¾Ý½á¹¹£¬£¬£¬Äܹ»¼òÆÓÓÐÓõØÃæÏò¹¤¾ß±à³Ì¡£¡£¡£Ëæ×Ű汾µÄÒ»Ö±¸üкÍÓïÑÔй¦Ð§µÄÌí¼Ó£¬£¬£¬Öð½¥±»ÓÃÓÚ×ÔÁ¦µÄ¡¢´óÐÍÏîÄ¿µÄ¿ª·¢¡£¡£¡£
2021Äê02ÔÂ19ÈÕ£¬£¬£¬Python¹Ù·½Ðû²¼Ç徲ͨ¸æ£¬£¬£¬¹ûÕæÁËpythonÖеÄÒ»¸öRCEÎó²î£¨CVE-2021-3177£©£¬£¬£¬ÆäCVSSv3ÆÀ·ÖΪ9.8¡£¡£¡£
¡¡Python ctypesÄ£¿£¿£¿£¿éÊÇPythonÄÚ½¨µÄÓÃÓÚŲÓö¯Ì¬Á´½Ó¿âº¯ÊýµÄ¹¦Ð§Ä£¿£¿£¿£¿é¡£¡£¡£ÓÉÓÚδ¼ì²ésprintf£¨£©º¯ÊýµÄ³¤¶È£¬£¬£¬_ctypes/callproc.cÖеÄPyCArg_repr£¨£©º¯ÊýÖб£´æ»º³åÇøÒç³öÎó²î£¬£¬£¬Õâ¿ÉÄܻᵼÖÂijЩ½ÓÊܸ¡µãÊý×÷Ϊ²»¿ÉÐÅÊäÈëµÄPythonÓ¦ÓóÌÐòÖеÄÔ¶³Ì´úÂëÖ´ÐС£¡£¡£
µ±Ì죬£¬£¬Redhat¹Ù·½Ò²Ðû²¼Á˸ÃÎó²îµÄÇ徲ͨ¸æ£¬£¬£¬Æä¶Ô¸ÃÎó²îµÄCVSSv3ÆÀ·ÖΪ5.9£¬£¬£¬²¢ÌåÏÖ´ËÎó²î´øÀ´µÄ×î´óÍþвÊǶÔϵͳµÄ¿ÉÓÃÐÔ¡£¡£¡£Python¹Ù·½ÔòÒÔΪ¸ÃÎó²î²»Ì«¿ÉÄܱ»Ê¹Ó㬣¬£¬ÓÉÓÚÔì³ÉRCEÐèÒªÖª×ãÒÔÏÂÌõ¼þ£º
l ´ÓÔ¶³Ì¶Ëת´ïÒ»¸ö²»ÊÜÐÅÈεĸ¡µãÊýµ½ctypes.c_double.from_param (×¢ÖØ£ºPython¸¡µãÊý²»ÊÜÓ°Ïì)¡£¡£¡£
l ½«¸Ã¹¤¾ßת´ï¸ørepr()(ÀýÈçͨ¹ýÈÕÖ¾¼Í¼)¡£¡£¡£
l ʹ¸¡µãÊý³ÉΪÓÐÓõĻúе´úÂë¡£¡£¡£
l Èûº³åÇøÒç³öÔÚ׼ȷµÄλÖÃÁýÕÖ¿ÍÕ»£¬£¬£¬ÈôúÂë»ñµÃÖ´ÐС£¡£¡£
¿ÉʹÓÃÈçÏÂÏÂÁîÔì³É»º³åÇøÒç³ö£º
>>> from ctypes import *
>>> c_double.from_param(1e300)
*** buffer overflow detected ***: terminated
Aborted
ÏÖÔÚ¸ÃÎó²îµÄPoCÒѾ¹ûÕæ£¬£¬£¬ÑéÖ¤ÈçÏ£º
±ðµÄ£¬£¬£¬Python»¹¹ûÕæÁËÁíÒ»¸öWeb»º´æÖж¾Îó²î£¨CVE-2021-23336£©¡£¡£¡£0-3.6.13¡¢3.7.0-3.7.10¡¢3.8.0-3.8.8¡¢3.9.0-3.9.2µÄpython/cpython°üͨ¹ýʹÓÃÃûΪparameter cloakingµÄÏòÁ¿£¬£¬£¬ÈÝÒ×Êܵ½Í¨¹ýurllib.parse.parse_qslºÍurllib.parse.parse_qsµÄWeb»º´æÖж¾¡£¡£¡£
0x02 ´¦Öóͷ£½¨Òé
½¨ÒéÉý¼¶µ½Python 3.6.13¡¢3.7.10¡¢3.8.8»ò3.9.2¡£¡£¡£
ÏÂÔØÁ´½Ó£º
Python 3.9.2
https://www.python.org/downloads/release/python-392/
Python 3.8.8
https://www.python.org/downloads/release/python-388/
0x03 ²Î¿¼Á´½Ó
https://blog.python.org/2021/02/python-392-and-388-are-now-available.html
https://access.redhat.com/security/cve/cve-2021-3177
https://bugs.python.org/issue42938
https://www.randori.com/cve-2021-3177-vulnerability-analysis/
0x04 ʱ¼äÏß
2021-02-19 PythonÐû²¼Ç徲ͨ¸æ
2021-02-24 VSRCÐû²¼Ç徲ͨ¸æ
0x05 ¸½Â¼
CVSSÆÀ·Ö±ê×¼¹ÙÍø£ºhttp://www.first.org/cvss/