IEÔ¶³Ì´úÂëÖ´Ðзì϶£¨CVE-2020-0674£©·ÖÎö
°ä²¼¹¦·ò 2020-03-092020Äê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)ÖÐÒѾ¸ø³ö£º£º
·ì϶ºÍ²¹¶¡·ÖÎö
PART1
ÔÚ¿ªÆôÒ³¶ÑµÄIEä¯ÀÀÆ÷Öе÷ÊÔ£¬£¬£¬±ÀÀ£ÏÖ³¡ÈçÏ£º£º
ƾ¾ÝÕ»»ØËÝÄܹ»¶ÔÓ¦µ½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¶ÔÏóΪÀý£º£º
ƾ¾ÝÄæÏò·ÖÎöºÍÎĵµ£¬£¬£¬Õâ¸öö¾ÙÀàÐ͵ÄÖµÊÇVARIANT->VarTypeÓò¡£ÆäÖУ¬£¬£¬0x400C´ú±í¸Ã¶ÔÏóÊÇÒ»¸öÖ¸ÕëÀàÐ͵ĶÔÏ󣬣¬£¬Ö¸ÏòÁíÒ»¸öVARIANT£¬£¬£¬ÆäÖ¸ÕëÓòλÓÚoffset 8µÄµØÎ»£¬£¬£¬Ò²¼´*((_DOWORD *)i + 2)¡£¿£¿£Äܹ»¿´µ½£¬£¬£¬´Ë´¦µÄÐÞ²¹ÊÇÈ¡³öÖ¸ÕëÖµ£¬£¬£¬´«µÝ¸øVAR::Scavengeº¯Êý¡£¶øVAR::ScavengeÔٴζÔ0x400CµÄö¾ÙÐͱäÁ¿Ôö³¤ÁËÌØÊâ´¦Ö㺣º
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£¬£¬£¬µ«×îÖÕ¶¼Éý¼¶µ½ºóÕߣº£º
KB4524570ºÍKB4532693¶¼Ô̺¬Á˶ÔÉÏÊö·ì϶Ö÷ÌâµÀÀíµÄÐÞ¸´£¬£¬£¬ÆäÖÐǰÕß¶Ôjscript.dllÓнϴóŤת£¬£¬£¬¶øºóÕߍתÔò¼ò½àºÃ¶à¡£KB4532693»¹Ô̺¬ÁíÒ»¸ö¸Ä½ø£¬£¬£¬Ê¹Óá°ÈßÓàÈÝÔÖ¡±µÄ˼·ÌṩÁËÁíÒ»´¦¼ÓÇ¿£»£»´Ë´¦¼ÓǿλÓÚJavascriptÒýÇæÖÐcallºÍdispatchµÄ»ù´¡ÉèÊ©ÖУ¬£¬£¬¶ø²»ÊǶԸ÷Àà¶ÔÏóÖð¸ö²¹¾È¡£
KB4532693¶Ôjscript.dllÖеÄScrFncObj::Callº¯Êý½øÐÐÁËÖØÐÂ×éÖ¯£¬£¬£¬¶ÔÓÚCallWithFrameOnStackºÍCallWithFrameOnHeap(×Ô½ç˵Ãû³Æ)ÕâÁ½ÖÖÇé¿ö£¬£¬£¬ÓÃScrFncObj::PerformCallͳһ¡£ÔÚScrFncObj::PerformCallÖУ¬£¬£¬°ÑŲÓÃʹÓõĺ¯Êý²ÎÊý²ÎÓëÀ¬»ø»ØÊյġ°¸ù¡±ÖУº£º
¾¹ýÑéÖ¤£¬£¬£¬ÔÚ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


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