PythonÔ¶³Ì´úÂëÖ´ÐÐÎó²î£¨CVE-2021-3177£©

Ðû²¼Ê±¼ä 2021-02-24

0x00 Îó²î¸ÅÊö

CVE  ID

CVE-2021-3177

ʱ   ¼ä

2021-02-24

Àà   ÐÍ

RCE

µÈ   ¼¶

ÑÏÖØ

Ô¶³ÌʹÓÃ

ÊÇ

Ó°Ïì¹æÄ£

Python 3.x- 3.9.1

 

0x01 Îó²îÏêÇé

image.png

 

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ÒѾ­¹ûÕæ£¬£¬£¬£¬£¬ÑéÖ¤ÈçÏ£º

image.png


image.png


±ðµÄ£¬£¬£¬£¬£¬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/

image.png