Apache HTTP Server mod_luaÄ£¿£¿£¿£¿£¿£¿£¿£¿é»º³åÇøÒç¶Âí½Å·ÖÎö£¨CVE-2021-44790£©
°ä²¼¹¦·ò 2022-01-20·ì϶¸ÅÊö
2021Äê12ÔÂ20ÈÕ£¬£¬£¬£¬£¬£¬£¬Apache ÍŶӰ䲼ÁËApache HTTP Server 2.4.52°æ±¾£¬£¬£¬£¬£¬£¬£¬½¨¸´ÁËApache HTTP ServerÖеÄÒ»¸ö»º³åÇøÒç¶Âí½Å£¨CVE-2021-44790£©£¬£¬£¬£¬£¬£¬£¬¸Ã·ì϶´æÔÚÓÚmod_lua½âÎöÆ÷ÖУ¬£¬£¬£¬£¬£¬£¬µ±·þÎñÆ÷½âÎö¶ñÒâÒªÇóʱ´¥·¢»º³åÇøÒç³ö£¬£¬£¬£¬£¬£¬£¬¿Éµ¼Ö»ؾø·þÎñ»òÖ´ÐÐËÁÒâ´úÂë¡£¡£¡£¡£¡£¡£¡£¡£
Ó°ÏìÁìÓò
Ó°Ïì°æ±¾£ºApache HTTP Server <= 2.4.51
ÓйؽéÉÜ
Mod_luaÄ£¿£¿£¿£¿£¿£¿£¿£¿é
Mod_luaÄ£¿£¿£¿£¿£¿£¿£¿£¿éÊÇApacheÉϵÄÒ»¸öÀ©´óÄ£¿£¿£¿£¿£¿£¿£¿£¿é£¬£¬£¬£¬£¬£¬£¬ºÏÓÃÓÚ2.3ÒÔÉϰ汾¡£¡£¡£¡£¡£¡£¡£¡£¸ÃÄ£¿£¿£¿£¿£¿£¿£¿£¿éÔÊÐíʹÓÃlua¾ç±¾À©´ó·þÎñÆ÷£¬£¬£¬£¬£¬£¬£¬»¹Ô̺¬ºÜ¶àÆäËûÄ£¿£¿£¿£¿£¿£¿£¿£¿é¿ÉÓõĹ³×Óº¯Êý¡£¡£¡£¡£¡£¡£¡£¡£ÀýÈ罫ҪÇó Map µ½Îļþ£¬£¬£¬£¬£¬£¬£¬ÌìÉú¶¯Ì¬ÏìÓ¦£¬£¬£¬£¬£¬£¬£¬½Ó¼û½ÚÔ죬£¬£¬£¬£¬£¬£¬Éí·ÝÑéÖ¤ºÍÊÚȨµÈ¡£¡£¡£¡£¡£¡£¡£¡£ÈôÊÇ¿ªÆô¸ÃÄ£¿£¿£¿£¿£¿£¿£¿£¿é£¬£¬£¬£¬£¬£¬£¬¿ÉÄÜ»áÔì³ÉһЩ°²È«Òþ»¼¡£¡£¡£¡£¡£¡£¡£¡£
ÔÚ/etc/httpd/httpd.cnfÅäÖÃÎļþÖÐÈ¡µÞÏÂÃæÕâÐÐ×¢½â£¬£¬£¬£¬£¬£¬£¬¼´¿É¿ªÆô¸ÃÄ£¿£¿£¿£¿£¿£¿£¿£¿éµÄÖ°ÄÜ¡£¡£¡£¡£¡£¡£¡£¡£

µ±ÊÕµ½.luaÎļþÒªÇóʱ£¬£¬£¬£¬£¬£¬£¬mod_luaÄ£¿£¿£¿£¿£¿£¿£¿£¿éŲÓÃlua-scriptµÄhandleº¯Êý½øÐд¦Öᣡ£¡£¡£¡£¡£¡£¡£ÏÂͼΪhandleº¯ÊýÊ·ý¡£¡£¡£¡£¡£¡£¡£¡£

aprÄÚ´æ³Ø
ΪÁËÏ÷¼õϵͳÄÚ´æ·ÖÅäµÄ¹¦·ò£¬£¬£¬£¬£¬£¬£¬Ìá¸ß·¨Ê½ÔËÐÐЧÄÜ£¬£¬£¬£¬£¬£¬£¬ApacheµÄ¿ª·¢Õß´´½¨ÁËÒ»Ì×»ùÓڳظÅÏëµÄÄÚ´æÖÎÀí¹æ»®¡£¡£¡£¡£¡£¡£¡£¡£ÕâÌײ½ÖèÒÆµ½aprÖгÉΪͨÓõÄÄÚ´æÖÎÀí¹æ»®£¬£¬£¬£¬£¬£¬£¬Ò²¾ÍÊÇaprÄÚ´æ³Ø¡£¡£¡£¡£¡£¡£¡£¡£
aprµÄÄÚ´æ³Ø½á¹¹ÆäʵÊÇÒ»ÖÖÊ÷×´µÄµµ´Î½á¹¹£¬£¬£¬£¬£¬£¬£¬parentÖ¸Ïòµ±Ç°ÄÚ´æ³ØµÄ¸¸ÄÚ´æ³Ø£¬£¬£¬£¬£¬£¬£¬childÖ¸Ïòµ±Ç°ÄÚ´æ³ØµÄ×ÓÄÚ´æ³Ø£¬£¬£¬£¬£¬£¬£¬siblingÔòÖ¸Ïòµ±Ç°ÄÚ´æ³ØµÄÐÖµÜÄÚ´æ³Ø¡£¡£¡£¡£¡£¡£¡£¡£Óû§Ê¹ÓõÄÄÚ´æ¿Õ¼ä£¬£¬£¬£¬£¬£¬£¬ÔòÊÇactiveÖÎÀíµÄÒ»¸ö½ÚµãÁ´±í¡£¡£¡£¡£¡£¡£¡£¡£Óû§ÒªÉêÇëÄÚ´æ¿Õ¼äµÄʱ³½¾Í»áÔÚactiveÖÎÀíµÄÄÚ´æ½ÚµãÖÐѰÕÒ¡£¡£¡£¡£¡£¡£¡£¡£
½á¹¹ÌåÈçÏÂËùʾ£º

Óû§ÉêÇëÄÚ´æ¹ý³Ì£º
£¨1£©Ê×ÏÈÈ¡×î¿¿½ü²»Ó×ÓÚ8×Ö½Ú±¶Êý´óÓ׵Ŀռ䣨8×Ö½Ú¶ÔÆë£©£¬£¬£¬£¬£¬£¬£¬¶øºóƾ¾ÝÉêÇë´óÓ×ÅжÏactive½Úµã¿ÉÓÿռäÊÇ·ñ×ã¹»¡£¡£¡£¡£¡£¡£¡£¡£ÈôÄÚ´æ×ã¹»£¬£¬£¬£¬£¬£¬£¬Òƶ¯first_availÖ¸Õ룬£¬£¬£¬£¬£¬£¬·µ»ØÆäµØÖ·£»£»£»£»£»£»£»Èô¿Õ¼ä²»¼°£¬£¬£¬£¬£¬£¬£¬Ôò³ÖÐø½øÐÐ2Ö®ºóµÄ²½Öè¡£¡£¡£¡£¡£¡£¡£¡£
£¨2£©ÅжÏÏÂÒ»¸öÄÚ´æ½ÚµãµÄÔü×Ò¿Õ¼äÊÇ·ñ×ã¹»£¬£¬£¬£¬£¬£¬£¬Èô×ã¹»ÔòʹÓÃÖ®£¬£¬£¬£¬£¬£¬£¬²¢½«Ö®ÍÑÀ뵱ǰÁ´±í£»£»£»£»£»£»£»Èô²»¼°£¬£¬£¬£¬£¬£¬£¬Ôòͨ¹ý¶ÈÅä×Ó·ÖÅäеÄÄÚ´æ½Úµã¡£¡£¡£¡£¡£¡£¡£¡£
£¨3£©½«µÚ2²½Öеõ½µÄ½Úµã²åÈëactive½Úµã֮ǰ£¬£¬£¬£¬£¬£¬£¬²¢³ÉΪеÄactive½Úµã¡£¡£¡£¡£¡£¡£¡£¡£
£¨4£©ÍÆËã¾ÉµÄactive½ÚµãµÄÔü×Ò¿Õ¼ä´óÓ×£¬£¬£¬£¬£¬£¬£¬²¢ÇÒÓëÆäÁ´±íºóµÄËùÓнڵãµÄÔü×Ò¿Õ¼ä´óÓ×±ÈÁ¦£¬£¬£¬£¬£¬£¬£¬²¢²åÈëÁ´±íÖÐÕýÈ·µÄµØÎ»¡£¡£¡£¡£¡£¡£¡£¡£

²¹¶¡·ÖÎö
¸Ã·ì϶ÔÚApache HTTP Server 2.4.52ÖнøÐÐÁ˽¨¸´£¬£¬£¬£¬£¬£¬£¬ÔÚÄÚ´æÉêÇë֮ǰ£¬£¬£¬£¬£¬£¬£¬Ôö³¤Á˶Գ¤¶ÈµÄºÏ·¨ÐÔУÑé¡£¡£¡£¡£¡£¡£¡£¡£µ±end-crlfÓ×ÓÚµÅ×Ú8£¬£¬£¬£¬£¬£¬£¬·¨Ê½»áÖ±½ÓÍ˳ö£¬£¬£¬£¬£¬£¬£¬Ô¤·ÀÕûÊýÒç³ö¡£¡£¡£¡£¡£¡£¡£¡£

·ì϶·ÖÎö
ƾ¾Ý·ì϶²¼¸æ£¬£¬£¬£¬£¬£¬£¬¿ÉÖª·ì϶´æÔÚÓÚmod_luaÄ£¿£¿£¿£¿£¿£¿£¿£¿éÖУ¬£¬£¬£¬£¬£¬£¬lua¾ç±¾Å²ÓÃÁËr:parsebody()º¯Êý²úÉúÁË»º³åÇøÒç³ö¡£¡£¡£¡£¡£¡£¡£¡£½áºÏpatchÐÅÏ¢£¬£¬£¬£¬£¬£¬£¬Ö±½Ó¶¨Î»µ½req_parsebodyº¯Êý¡£¡£¡£¡£¡£¡£¡£¡£
±¾ÎÄʹÓÃApache HTTP Server 2.4.49°æ±¾½øÐзÖÎö£¬£¬£¬£¬£¬£¬£¬´úÂëÖкìÉ«·½¿ò±êʶ³öÀ´µÄ²¿Ãż´·ì϶´úÂëµØÎ»£¬£¬£¬£¬£¬£¬£¬Í¼Æ¬ÖжԹؼü²¿ÃŽøÐÐÁËÏàÓ¦µÄ×¢½â¡£¡£¡£¡£¡£¡£¡£¡£

ÏÂÃæ½áºÏpostÊý¾Ý°üÀ´·ÖÎö·¨Ê½´¦ÖÃÂß¼¡£¡£¡£¡£¡£¡£¡£¡£»ú¹ØÈçÏÂpostÊý¾Ý°ü£º

Ê×ÏÈ£¬£¬£¬£¬£¬£¬£¬start±äÁ¿Ö¸ÏòpostÊý¾Ý°üÆðÍ·µÄµØÎ»£¬£¬£¬£¬£¬£¬£¬Ò²¾ÍÊǶÔÓ¦ÉÏÃæµÚÒ»¸ö±êʶ·û--VILC2R2IHFHLZZµÄµØÎ»£¬£¬£¬£¬£¬£¬£¬crlfÖ¸ÏòÁ½¸ö¿ÕÐУ¨\r\n\r\n£©ÆðÍ·µÄµØÎ»£¬£¬£¬£¬£¬£¬£¬endÖ¸ÏòÏÂÒ»¸ö±êʶ·ûVILC2R2IHFHLZZÆðÍ·µÄµØÎ»£¬£¬£¬£¬£¬£¬£¬ÄÇôÔÚcrlfºÍendÖ®¼äµÄÊý¾Ý¾ÍÓÐÏÂÃæÕâЩÄÚÈÝ£¬£¬£¬£¬£¬£¬£¬×ܳ¤¶ÈΪ8£¨ÌØÊâ×Ö·û³¤¶È£©+len£¨Êý¾Ý²ÎÊý³¤¶È£©¸ö×Ö½Ú¡£¡£¡£¡£¡£¡£¡£¡£
¡®\r\n\r\ntest\r\n--¡¯
ƾ¾ÝÉÏÃæ²ÎÊýÄÚÈÝ£¬£¬£¬£¬£¬£¬£¬ÎÒÃǾÍÄܹ»Àí½âÏÂÃæÕâÐдúÂëµÄÒâ˼ÁË¡£¡£¡£¡£¡£¡£¡£¡£vlenµÅ×Ú×ܳ¤¶È¼õÈ¥ÓÐÓàµÄ8¸öÌØÊâ×Ö·û£¬£¬£¬£¬£¬£¬£¬¾ÍÄܹ»ÍÆËã³ö²ÎÊýµÄ³¤¶È¡£¡£¡£¡£¡£¡£¡£¡£
vlen=end-crlf-8;
¶øºó£¬£¬£¬£¬£¬£¬£¬·¨Ê½Å²ÓÃapr_pcalloc·ÖÅäÄÚ´æ¡£¡£¡£¡£¡£¡£¡£¡£
![]()
·¨Ê½Ã»ÓжÔvlenÖµµÄºÏ·¨ÐÔ½øÐв鳣¬£¬£¬£¬£¬£¬£¬ÈôÊÇÉÏÃæ²ÎÊýÖеÄÌØÊâ×Ö·ûȱʧ£¬£¬£¬£¬£¬£¬£¬ÍÆËãµÄvlenÖµ¾Í¿ÉÄܱäΪ¸ºÊý£¬£¬£¬£¬£¬£¬£¬Ôì³ÉÕûÊýÒç³ö¡£¡£¡£¡£¡£¡£¡£¡£µ±ÉêÇë¿Õ¼äµÄʱ³½£¬£¬£¬£¬£¬£¬£¬»á³öÏÖ°²È«ÎÊÌâ¡£¡£¡£¡£¡£¡£¡£¡£
¶¯Ì¬µ÷ÊÔ
ƾ¾Ý·ÖÆç»ûÐΰüµÄ»ú¹Ø£¬£¬£¬£¬£¬£¬£¬Ë¼¿¼ÒÔÏÂÁ½ÖÖÇé¿ö£¬£¬£¬£¬£¬£¬£¬½áºÏ¶¯Ì¬µ÷ÊÔ½øÐзÖÎö¡£¡£¡£¡£¡£¡£¡£¡£
ÉêÇ볬´óµÄ¿Õ¼ä
Èç¹ûȱʧ'/r/n--'Õâ4¸öÌØÊâ×Ö·û£¬£¬£¬£¬£¬£¬£¬ÇÒÊý¾Ý²¿ÃÅΪ2×Ö½Ú£¬£¬£¬£¬£¬£¬£¬vlen=(2+4-8)=-2¡£¡£¡£¡£¡£¡£¡£¡£Å²ÓÃapr_pcalloc(r->pool, vlen+1)ÉêÇëÄÚ´æÊ±£¬£¬£¬£¬£¬£¬£¬vlen+1=0xffffffffffffffff¡£¡£¡£¡£¡£¡£¡£¡£
ʹÓÃgdb¸½¼Ó¹ý³Ì£¬£¬£¬£¬£¬£¬£¬½øÐж¯Ì¬µ÷ÊÔ¡£¡£¡£¡£¡£¡£¡£¡£ÔÚ·ì϶º¯Êý´¦ÉèÖöϵ㣬£¬£¬£¬£¬£¬£¬¶øºó·¢ËÍÌØÊâµÄpostÒªÇ󡣡£¡£¡£¡£¡£¡£¡£

aprÄÚ´æ³ØÎÞ·¨ÌṩÕâô´óµÄÄڴ棬£¬£¬£¬£¬£¬£¬ÕâʱaprµÄ·ÖÅä×ӾͻáÏòϵͳÉêÇëÄÚ´æ¿Õ¼ä£¬£¬£¬£¬£¬£¬£¬µ«ÊÇÉêÇëµÄ¾Þ´óÄÚ´æ¿Õ¼äÊÇϵͳÎÞ·¨ÌṩµÄ£¬£¬£¬£¬£¬£¬£¬ËùÒÔϵͳ»áÖ±½Ó½«¹ý³Ìkillµô£¨0x75Êǹý³ÌºÅ£©£¬£¬£¬£¬£¬£¬£¬Ôì³É»Ø¾ø·þÎñ¡£¡£¡£¡£¡£¡£¡£¡£

Òç³ö³¬³¤µÄ×Ö½Ú
Èç¹ûȱʧ'/r/n--'Õâ4¸öÌØÊâ×Ö·û£¬£¬£¬£¬£¬£¬£¬ÇÒÊý¾Ý²¿ÃÅΪ3×Ö½Ú£¬£¬£¬£¬£¬£¬£¬vlen=(3+4-8)=-1£¬£¬£¬£¬£¬£¬£¬Å²ÓÃapr_pcalloc(r->pool, vlen+1)ÉêÇëÄÚ´æÊ±£¬£¬£¬£¬£¬£¬£¬³¤¶Èvlen+1=0£¬£¬£¬£¬£¬£¬£¬Æ¾¾ÝaprÄÚ´æ³ØÄÚ´æ·ÖÅä»úÔ죬£¬£¬£¬£¬£¬£¬aprÄÚ´æ³Ø»á·ÖÅä×îÓ×µÄÄÚ´æ¿é8×Ö½Ú£¬£¬£¬£¬£¬£¬£¬×îºóʹÓú¯ÊýmemcpyµÄʱ³½£º
memcpy(buffer, crlf + 4, vlen)
vlenÓÖΪFFFFFFFF.......(-1)£¬£¬£¬£¬£¬£¬£¬¾Í»á²úÉú»º³åÇøÒç³ö¡£¡£¡£¡£¡£¡£¡£¡£
¶¯Ì¬µ÷ÊÔʱÄܹ»¿´µ½Å²ÓÃapr_pallocʱ£¬£¬£¬£¬£¬£¬£¬³¤¶È²ÎÊýÊÇ0£¬£¬£¬£¬£¬£¬£¬ÏÖʵÉÏ»á·ÖÅä8×ֽڵĿռ䡣¡£¡£¡£¡£¡£¡£¡£


²Î¿¼Á´½Ó£º
[1]https://mp.weixin.qq.com/s/XLzXHZYvpPIqNrDz3OHaMA
[2]https://nakedsecurity.sophos.com/2021/12/21/apaches-other-product-critical-bugs-in-httpd-web-server-patch-now/
[3]https://httpd.apache.org/security/vulnerabilities_24.html
[4]https://ubuntu.com/security/CVE-2021-44790
[5]https://github.com/apache/httpd/commit/07b9768cef6a224d256358c404c6ed5622d8acce


¾©¹«Íø°²±¸11010802024551ºÅ