Nginx/OpenRestyÄÚ´æÐ¹Â©/Ŀ¼´©Ô½·ì϶·çÏÕ¹«¸æ

°ä²¼¹¦·ò 2020-03-20

·ì϶±àºÅºÍ¼¶±ð


CVE±àºÅ£º£º£ºÔÝÎÞ£¬Î£ÏÕ¼¶±ð£º£º£ºÖÐΣ£¬CVSS·ÖÖµ£º£º£º³§ÉÌ×ÔÆÀ£º£º£º¹Ù·½Î´ÆÀ¶¨


Ó°Ïì°æ±¾


nginx <= v1.17.7 (commit af8ea176a743e97d767b3e1439d549b52dd0367a)

openresty <= v1.15.8.2


·ì϶¸ÅÊö


½üÈÕ£¬openwall oss-security Óʼþ×é°ä²¼¹«¸æÅû¶ÁËÁ½¸ö·ì϶¡£¡£¡£ÔÚÌØ¶¨ÅäÖÃÏ nginx/openresty ´æÔÚ ÄÚ´æÐ¹Â©·ì϶/Ŀ¼´©Ô½·ì϶¡£¡£¡£


NGINXÊÇÃÀ¹úNGINX¹«Ë¾µÄÒ»¿îÇáÁ¿¼¶Web·þÎñÆ÷/·´Ïò´úÀí·þÎñÆ÷¼°µç×ÓÓʼþ£¨IMAP/POP3£©´úÀí·þÎñÆ÷¡£¡£¡£OpenRestyÊÇÒ»¿î»ùÓÚNginxºÍLuaµÄWebƽ̨¡£¡£¡£¸Ãƽ̨ÓÃÓڴÓÃÓÚ´¦Öø߲¢·¢¡¢¡¢¡¢¸ßÀ©´óÐԵĶ¯Ì¬WebÀûÓᢡ¢¡¢Web·þÎñºÍ¶¯Ì¬Íø¹Ø¡£¡£¡£

¸Ã¹«¸æÖÐÏÔʾ£¬OpenRestyͨ¹ýÔÚnginxÖнøÐÐÔ­Ê¼ÖØÐ´À´ÊµÏÖngx.req.set_uri()£¬¶øÎÞÐè½øÐÐÈÎºÎÆäËû¹ýÂË»ò³ß¶È»¯¡£¡£¡£ÈôÊÇÓë²»ÊÜÐÅÀµµÄÊäÈëһ·ʹÓã¬Ôò¿ÉÄܵ¼ÖÂCRLF/header×¢È룬Ŀ¼±éÀú/±¾µØÎļþ¶ÁÈ¡£¡£¡£¬ÏÞ¶ÈÈÆ¹ý¡£¡£¡£ÓÉÓÚnginxµÄ¡°ÖØÐ´¡±ÊµÏÖÖÐÓÐÒ»¸öbug£¬Ò²Äܹ»µ¼ÖÂÄÚ´æÐ¹Â¶¡£¡£¡£


·ì϶ÑéÖ¤


PoC:https://www.openwall.com/lists/oss-security/2020/03/18/1¡£¡£¡£


ÐÞ¸´½¨Òé


1. Nginx¹Ù·½ÒѰ䲼ÐÞ¸´°æ±¾£¬Óû§±ØÒª¸üе½ v1.17.9 £¨commit a5895eb502747f396d3901a948834cd87d5fb0c3£©

2. OpenResty Óû§±ØÒªÅŲéNginxÅäÖÃÎļþÖÐ rewrite ÒÔ¼° ngx.req.set_uri£¬½¨ÒéÔÚ²»ÊDZØÐëʹÓõÄÇé¿öÏ£¬Ò»Ê±½ûÓÃÓйØÅäÖᣡ£¡£


²Î¿¼Á´½Ó


https://www.openwall.com/lists/oss-security/2020/03/18/1