IEÔ¶³Ì´úÂëÖ´Ðзì϶£¨CVE-2020-0674£©·ÖÎö

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

2020Äê1ÔÂ17ÈÕ£¬£¬Î¢Èí°ä²¼ÁËÕë¶ÔIEÔ¶³Ì´úÂëÖ´Ðзì϶£¨CVE-2020-0674£©µÄSecurity Advisory(ADV200001)£¬£¬²¢Ö¸³ö¸Ã0day·ì϶ÒѾ­±»Ê¹ÓÃÓÚÕë¶ÔÐÔ¹¥»÷¡£¡£Ä¿Ç°£¬£¬Î¢ÈíÒѾ­°ä²¼Óйز¹¶¡½øÐÐÐÞ¸´¡£¡£


¸Ã·ì϶ӰÏì×é¼þΪjscript.dll£¬£¬¸Ã¶¯Ì¬Á´½Ó¿âÊÇ΢ÈíInternet Explorerä¯ÀÀÆ÷µÄJavascriptÒýÇæÖ®Ò»£¬£¬ÆäÖÐIE8¼°ÒÔÏÂʹÓÃjscript.dll£¬£¬IE9¼°ÒÔÉÏĬÈÏʹÓÃjscript9.dll£¬£¬µ«ÍøÒ³Äܹ»Í¨¹ý<script>±êǩָ¶¨ÔÚIE8¼æÈÝÐÔģʽϼÓÔØjscript.dll£¬£¬Òò¶øIE9¡¢IE10¡¢IE11¶¼Êܵ½´Ë·ì϶ӰÏì¡£¡£´Ó²Ù×÷ϵͳÁìÓòÀ´¿´£¬£¬±¾·ì϶ӰÏìÁìÓòºá¿çWindows 7ÖÁWindows 10ÖÐËùÓеÄСÎÒ²Ù×÷ϵͳºÍ·þÎñÆ÷²Ù×÷ϵͳ¡£¡£


¸Ã·ì϶ÊÇÒ»¸öUse-After-Free·ì϶£¬£¬¹¥»÷Ñù±¾Ê¹ÓÃUAF´ï³ÉÀàÐÍ»ìºÏ£¬£¬½ø¶ø»ñȡȫ¾ÖÄÚ´æ¶ÁдÄÜÁ¦²¢ÈƹýASLRµÈ·ì϶ÀûÓûº½â¼¼Êõ£¬£¬²¢´ÓÖ¸¶¨ipµØÖ·ÒªÇóÏÂÒ»²½¹¥»÷ÔØºÉ£¬£¬×îÖÕ´ïµ½Ô¶³Ì´úÂëÖ´ÐС£¡£


OG¶«·½ÌüADLab°²È«×êÑÐԱƾ¾Ý·´²¡¶¾³§É̲¶»ñµ½µÄÑù±¾¶Ô´Ë·ì϶½øÐÐÁË·ÖÎö£¬£¬·¢ÏÖ·ì϶CVE-2020-0674ÆäʵÓëCVE-2019-1429´Ó·ì϶µÀÀíÉÏÊÇͳһ¸ö·ì϶£¬£¬µ«´¥·¢·ì϶µÄÑù±¾½ØÈ»·ÖÆç£¬£¬Á½´ÎÍÆ³öµÄ²¹¶¡Ò²²»ÆëȫһÑù¡£¡£


Ó¦¶Ô´ëÊ©


ʹÓÃWindows¸üкͲ¹¶¡ÐÞ¸´´Ë·ì϶¡£¡£

½ûÓÃjscript.dll£¬£¬Security Advisory(ADV200001)ÖÐÒѾ­¸ø³ö£º


OG¶«·½Ìü¡¤(Öйú´ó½)


·ì϶ºÍ²¹¶¡·ÖÎö


PART1


ÔÚ¿ªÆôÒ³¶ÑµÄIEä¯ÀÀÆ÷Öе÷ÊÔ£¬£¬±ÀÀ£ÏÖ³¡ÈçÏ£º


OG¶«·½Ìü¡¤(Öйú´ó½)


ƾ¾ÝÕ»»ØËÝÄܹ»¶ÔÓ¦µ½htmlÑù±¾µÄtypeofŲÓᣡ£ÔÚÑù±¾ÖУ¬£¬¾­¹ý¸´ÔÓµÄÒýÓòÙ×÷£¬£¬ÔÚarr3ÖУ¬£¬Ç°Ò»²¿ÃÅÔªËØÓ¦¸ÃΪundefined£¬£¬ºóÒ»²¿ÃÅÔªËØÓ¦ÎªRegExp¶ÔÏ󣬣¬µ«Ê¹ÓÃtypeof½Ó¼ûÄ³ÔªËØÊ±±¨´íΪ¡°ÒÑ¿ªÊ͵ÄÒ³¶Ñ¿Õ¼ä¡±£¬£¬Äܹ»¿´³öÕâÊÇÒ»¸öÓÉÀ¬»ø»ØÊÕ»úÖÆÒýÆðµÄÎÊÌâ¡£¡£ÔÚÓû§Ä¬ÈÏÉèÖÃÏ£¬£¬¼´Î´¿ªÆôÒ³¶Ñʱ£¬£¬arr3ÖеÄijһ¸öÔªËØi»áµ¼ÖÂarr3[i]) === "number"³ÉÁ¢£¬£¬´Ëʱ¼´Òý·¢ÀàÐÍ»ìºÏ¡£¡£


IE jscriptµÄÀ¬»ø»ØÊÕ(Garbage Collect, GC)»ùÓÚMark-SweepËã·¨£¬£¬¼´´Ó½ç˵Ϊ¡°¸ù¡±µÄÊý¾Ý½á¹¹ÆðÍ·£¬£¬Ñ°ÕÒÆäËùÓÐÒýÓõ½µÄ¶ÔÏóÏóÕ÷ΪÕýÔÚʹÓ㬣¬¶øÃ»ÓÐÔÚÏóÕ÷µÄ¶ÔÏó±»µ±×÷²»ÔÙʹÓ㬣¬ÆäÄÚ´æ¿Õ¼ä½«ÔÚÀ¬»ø»ØÊÕ¹ý³ÌÖб»¿ªÊÍ¡£¡£Òò¶ø´Ó±ÀÀ£ÏÖ³¡¿´£¬£¬±¾·ì϶µÄ³ÉÒòÊÇMark-SweepµÄÏóÕ÷¹ý³Ì³öÏÖÁËÎÊÌ⣬£¬Ò²¾ÍÊǶÔÏóÖ®¼äµÄÒýÓóöÏÖÁËÎÊÌâ¡£¡£


²¹¶¡·ÖÎöµÄ½áÂÛÖ§³ÖÁËÉÏÊö²Â²â¡£¡£×°Öò¹¶¡ºó£¬£¬¶ÔоÉjscript.dll½øÐÐbin diff£¬£¬Äܹ»¿´µ½À¬»ø»ØÊÕËã·¨ÔÚ¶à¸ö¶ÔÏóµÄÏóÕ÷¹ý³Ì(Scavenge)×ÅÖØ´¦ÖÃÁËÒ»¸öֵΪ0x400CµÄÌØÊâÇé¿ö£¬£¬ÒÔNameList¶ÔÏóΪÀý£º


OG¶«·½Ìü¡¤(Öйú´ó½)


ƾ¾ÝÄæÏò·ÖÎöºÍÎĵµ£¬£¬Õâ¸öö¾ÙÀàÐ͵ÄÖµÊÇVARIANT->VarTypeÓò¡£¡£ÆäÖУ¬£¬0x400C´ú±í¸Ã¶ÔÏóÊÇÒ»¸öÖ¸ÕëÀàÐ͵ĶÔÏ󣬣¬Ö¸ÏòÁíÒ»¸öVARIANT£¬£¬ÆäÖ¸ÕëÓòλÓÚoffset 8µÄµØÎ»£¬£¬Ò²¼´*((_DOWORD *)i + 2)¡£¡£Äܹ»¿´µ½£¬£¬´Ë´¦µÄÐÞ²¹ÊÇÈ¡³öÖ¸ÕëÖµ£¬£¬´«µÝ¸øVAR::Scavengeº¯Êý¡£¡£¶øVAR::ScavengeÔٴζÔ0x400CµÄö¾ÙÐͱäÁ¿Ôö³¤ÁËÌØÊâ´¦Öãº


OG¶«·½Ìü¡¤(Öйú´ó½)


VAR::Scavengeº¯Êý¶Ô´«Èë¶ÔÏóµü´úµØ½âÒýÓ㬣¬Ö±µ½»ñµÃ·ÇÖ¸ÕëµÄ¶ÔÏ󣬣¬Ò²¼´Èô¸É²ãÖ¸ÕëµÄ×îÖÕÖ¸Ïò£¬£¬½«Æä´«ÈëGcContext::ScavengeVar¡£¡£GcContext::ScavengeVarº¯ÊýÂß¼­½ÏΪµ¥Ò»£¬£¬¸Ãº¯Êýͨ¹ýÓë0xF7FFµÄÓë²Ù×÷¶Ô´«Èë¶ÔÏó½øÐÐÏóÕ÷£¬£¬¸ÃÓë²Ù×÷Êǽ«µÚ12λÇåÁã¡£¡£


¾­¹ý²âÊÔ£¬£¬CVE-2019-1429ÓëCVE-2020-0674µÄÑù±¾ÔÚ¸÷¸ö¡°Î´ÐÞ¸´¡±ºÍ¡°ÒÑÐÞ¸´¡±°æ±¾Öвû·¢ÆëȫһÖ¡£¡£ÆäUAFµÄ¶ÔÏóµÄÏóÕ÷¹ý³ÌµÄÈ·¾­ÓÉNameList::ScavengeCore£¬£¬ÔÚCVE-2019-1429ÖÐÊÇArrayË÷ÒýµÄObject¶ÔÏ󣬣¬ÔÚCVE-2020-0674ÖÐÊÇArrayË÷ÒýµÄRegExp¶ÔÏ󣬣¬NameList::ScavengeCore¾ö¶¨ÁËÆäÊÇ·ñ±»ÏóÕ÷¡£¡£


Òò¶ø¶ÔÓÚ±¾·ì϶µÄ³ÉÒòµÃ³ö½áÂÛ£ºÔÚMark-SweepÏóÕ÷Ëã·¨ÖУ¬£¬Óöµ½Ö¸ÕëÀàÐ͵ĶÔÏóʱӦ¸Ã½âÒýÓò¢ÏóÕ÷¶ÔÓ¦¶ÔÏó£»±¾ÀýÖУ¬£¬²»×ã½âÒýÓõĹý³Ìµ¼ÖÂÁË·ì϶µÄ²úÉú¡£¡£


PART2


½øÒ»²½·ÖÎöÄܹ»·¢ÏÖ£¬£¬Õë¶ÔCVE-2019-1429ºÍCVE-2020-0674΢ÈíÏȺóÍÆ³öÁËÁ½¸öpatch£¬£¬ÒÔWindows 10 Version 1903 for 32-bit SystemsΪÀý£¬£¬±ðÀëÊÇKB4524570ºÍKB4532693£¬£¬µ«×îÖÕ¶¼Éý¼¶µ½ºóÕߣº


OG¶«·½Ìü¡¤(Öйú´ó½)


KB4524570ºÍKB4532693¶¼Ô̺¬Á˶ÔÉÏÊö·ì϶Ö÷ÌâµÀÀíµÄÐÞ¸´£¬£¬ÆäÖÐǰÕß¶Ôjscript.dllÓнϴóŤת£¬£¬¶øºóÕߍתÔò¼ò½àºÃ¶à¡£¡£KB4532693»¹Ô̺¬ÁíÒ»¸ö¸Ä½ø£¬£¬Ê¹Óá°ÈßÓàÈÝÔÖ¡±µÄ˼·ÌṩÁËÁíÒ»´¦¼ÓÇ¿£»´Ë´¦¼ÓǿλÓÚJavascriptÒýÇæÖÐcallºÍdispatchµÄ»ù´¡ÉèÊ©ÖУ¬£¬¶ø²»ÊǶԸ÷Àà¶ÔÏóÖð¸ö²¹¾È¡£¡£


KB4532693¶Ôjscript.dllÖеÄScrFncObj::Callº¯Êý½øÐÐÁËÖØÐÂ×éÖ¯£¬£¬¶ÔÓÚCallWithFrameOnStackºÍCallWithFrameOnHeap(×Ô½ç˵Ãû³Æ)ÕâÁ½ÖÖÇé¿ö£¬£¬ÓÃScrFncObj::PerformCallͳһ¡£¡£ÔÚScrFncObj::PerformCallÖУ¬£¬°ÑŲÓÃʹÓõĺ¯Êý²ÎÊý²ÎÓëÀ¬»ø»ØÊյġ°¸ù¡±ÖУº


OG¶«·½Ìü¡¤(Öйú´ó½)


¾­¹ýÑéÖ¤£¬£¬ÔÚPerformCallµÄ¼Ó¹ÌÏ£¬£¬¼´±ãNameListµÈ¶ÔÏó³öÏÖÎÊÌ⣬£¬ÔÚº¯ÊýŲÓÃÖÐ×÷Ϊ²ÎÊýµÄ¶ÔÏóÒÀÈ»±»ÕýÈ·ÏóÕ÷£¬£¬²»»á´¥·¢·ì϶¡£¡£Òò¶ø¹ÌÈ»Á½¸ö²¹¶¡¶¼Äܹ»ÆëÈ«ÕмÜÁ½¸öCVEµÄexploit£¬£¬ÈÔÄܹ»ÒÔΪKB4532693ÊDZÈKB4524570ÉÔ΢¸ßÃîÒ»µãµÄÐÞ²¹¡£¡£



PART3


³ý´ËÖ®Í⣬£¬Á½¸ö²¹¶¡¹ÌÈ»¿ÉÄÜÔÚĬÈÏÅäÖÃÏÂÕмÜÉÏÊö·ì϶£¬£¬¶ÔÓ¦jscript.dllÒÀÈ»ÓÐÒ»¸ö³ÆÎªLegacyGCµÄ¼æÈÝÏ£¬ÒÑÐÞ²¹´úÂëÖÐÒÀȻƾ¾ÝGcContext::IsLegacyGCEnabled()µÄº¯Êý²éÎÊÁ˾ÖÀ´Åжϲ鳭ÊÇ·ñȾָ¡£¡£Æ¾¾ÝÄæÏò·ÖÎö¿ÉÖª£¬£¬¸Ãº¯Êý²éÎÊÒ»¸ö×¢²á±íÏ

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Policies\ee1ca8aa-4402-4da1-bbe2-69a09c483a56

ÔÚ´ËÏîΪ1ʱÒâΪ¡°¼æÈÝʹÓÃÀϵÄGC»úÖÆ¡±£¬£¬½«Ê¹KB4532693ÖеļÓǿʧЧ£¬£¬¶ÔÓÚKB4524570Ôò»áÆëȫʧЧ¡£¡£Òò¶ø¸Ã×¢²á±íÏîµÄÄÚÈÝÒ²Éæ¼°IEä¯ÀÀÆ÷µÄ°²È«ÐÔ£¬£¬±ØÒªÓèÒÔ°ÑÎÈ¡£¡£


²Î¿¼Á´½Ó£º

1.https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV200001

2.https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1429

3.https://www.virustotal.com