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µØÖ·ÇëÇóÏÂÒ»²½¹¥»÷Ôغɣ¬×îÖÕµ½´ïÔ¶³Ì´úÂëÖ´ÐС£
¶«Éƽ̨ADLabÄþ¾²Ñо¿Ô±Æ¾¾Ý·´²¡¶¾³§É̲¶×½µ½µÄÑù±¾¶Ô´Ë©¶´½øÐÐÁË·ÖÎö£¬·¢ÏÖ©¶´CVE-2020-0674ÆäʵÓëCVE-2019-1429´Ó©¶´ÔÀíÉÏÊÇͬһ¸ö©¶´£¬µ«´¥·¢Â©¶´µÄÑù±¾½ØÈ»²îÒ죬Á½´ÎÍƳöµÄ²¹¶¡Ò²²»ÍêÈ«Ïàͬ¡£
Ó¦¶Ô´ëÊ©
ʹÓÃWindows¸üкͲ¹¶¡ÐÞ¸´´Ë©¶´¡£
½ûÓÃjscript.dll£¬Security Advisory(ADV200001)ÖÐÒѾ¸ø³ö£º
©¶´ºÍ²¹¶¡·ÖÎö
PART1
ÔÚ¿ªÆôÒ³¶ÑµÄIEä¯ÀÀÆ÷Öе÷ÊÔ£¬Íß½âÏÖ³¡ÈçÏ£º
ƾ¾ÝÕ»»ØËÝ¿ÉÒÔ¶ÔÓ¦µ½htmlÑù±¾µÄtypeofµ÷Óá£ÔÚÑù±¾ÖУ¬¾¹ýÅÓ´óµÄÒýÓòÙ×÷£¬ÔÚarr3ÖУ¬Ç°Ò»²¿ÃÅÔªËØÓ¦¸ÃΪundefined£¬ºóÒ»²¿ÃÅÔªËØӦΪRegExp¹¤¾ß£¬µ«Ê¹ÓÃtypeof·ÃÎÊijԪËØʱ±¨´íΪ¡°ÒÑÊͷŵÄÒ³¶Ñ¿Õ¼ä¡±£¬¿ÉÒÔ¿´³öÕâÊÇÒ»¸öÓÉÀ¬»ø»ØÊÕ»úÖÆÒýÆðµÄÎÊÌâ¡£ÔÚÓû§Ä¬ÈÏÉèÖÃÏ£¬¼´Î´¿ªÆôÒ³¶Ñʱ£¬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