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µØÖ·ÇëÇóÏÂÒ»²½¹¥»÷ÔغÉ£¬×îÖÕµ½´ïÔ¶³Ì´úÂëÖ´ÐС£


¶«É­Æ½Ì¨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