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