¡¾Ô´´Îó²î¡¿Î¢ÈíIE/Edge¾ç±¾ÒýÇæÎó²îCVE-2020-0768ÆÊÎö
Ðû²¼Ê±¼ä 2020-03-13΢ÈíÔÚ¿ËÈÕÐû²¼µÄ²¹¶¡Í¨¸æÖУ¬£¬£¬£¬£¬£¬£¬ÐÞ¸´ÁËÒ»¸öÓɼøºÚµ£±£ÍøADLabÇå¾²Ñо¿Ô±Ìá½»µÄÎó²î£¬£¬£¬£¬£¬£¬£¬Îó²î±àºÅΪCVE-2020-0768¡£¡£¡£¡£¡£¡£¡£Îó²îλÓÚChakraCoreÒýÇæ´úÂë¿âÖУ¬£¬£¬£¬£¬£¬£¬¿ÉͬʱӰÏìInternet Explorer 11ºÍMicrosoft Edge (»ùÓÚEdgeHTML)ä¯ÀÀÆ÷¡£¡£¡£¡£¡£¡£¡£¸ÃÎó²îÊÇÒ»¸öÄÚ´æÆÆËðÐÍÎó²î£¬£¬£¬£¬£¬£¬£¬ÓÐÔ¶³Ì´úÂëÖ´ÐеÄΣº¦£¬£¬£¬£¬£¬£¬£¬Òò´Ë΢Èí½«ÆäÆÀ¼¶Îª¡°ÑÏÖØ¡±£¬£¬£¬£¬£¬£¬£¬²¢ÖÂлADLab¡£¡£¡£¡£¡£¡£¡£
Ó¦¶Ô²½·¥
ʹÓÃWindows×Ô¶¯¸üлòÊÖ¶¯ÏÂÔØ²¹¶¡°üÐÞ¸´Îó²î¡£¡£¡£¡£¡£¡£¡£
Îó²îºÍ²¹¶¡ÆÊÎö
PART1
±¾Îó²îÊÇChakraCoreÒýÇæÔÚJIT±àÒëÀú³ÌÖУ¬£¬£¬£¬£¬£¬£¬¼òµ¥Ö¸ÁîµÄÊý¾ÝÁ÷ÆÊÎö¹ýʧ£¬£¬£¬£¬£¬£¬£¬µ¼ÖµıäÁ¿»îÔ¾ÐÔÆÊÎöºÍ¼Ä´æÆ÷·ÖÅÉÍÉ»¯¡£¡£¡£¡£¡£¡£¡£Ê×ÏÈ£¬£¬£¬£¬£¬£¬£¬´ÓÎó²îÑù±¾µÄ¿ØÖÆÁ÷ͼ×îÏÈ¡£¡£¡£¡£¡£¡£¡£
ÆäÖУ¬£¬£¬£¬£¬£¬£¬ÔÚBlock 4ÓÐÈçϵÄ×Ö½ÚÂ룺
·ûºÅs10´ú±í[1337]£¬£¬£¬£¬£¬£¬£¬s6´ú±íconstÐÞÊεÄarr¡£¡£¡£¡£¡£¡£¡£Æ¾Ö¤±àÒëÔÀíµÄÊõÓ£¬£¬£¬£¬£¬£¬±äÁ¿»ñÈ¡½ç˵ֵ³ÆÎªdef£¬£¬£¬£¬£¬£¬£¬±äÁ¿Öµ±»Ê¹ÓóÆÎªuse£¬£¬£¬£¬£¬£¬£¬ÔÚInitConstÖ¸ÁîÖÐs6±»def£¬£¬£¬£¬£¬£¬£¬s10±»use£¬£¬£¬£¬£¬£¬£¬ËæºóÔÚStElemCÕâÌõÖ¸ÁîÏ£¬£¬£¬£¬£¬£¬£¬s6±»use¡£¡£¡£¡£¡£¡£¡£¿£¿£¿£¿ÉÒÔ¿´µ½s6Óës10¹ØÏµÇ×½ü£¬£¬£¬£¬£¬£¬£¬s6¿ÉÒÔ¿´×÷s10ƾ֤ÁíÒ»ÖÖÒªÁì¶Ôͳһ±äÁ¿µÄÒýÓ㬣¬£¬£¬£¬£¬£¬ChakraCore³ÆÎªcopy-prop·ûºÅ¶ÔÔʼ·ûºÅµÄÒýÓᣡ£¡£¡£¡£¡£¡£µ«µ÷ÊÔÏÔʾ£¬£¬£¬£¬£¬£¬£¬ÕâÀﱬ·¢Á˹ýʧ¡£¡£¡£¡£¡£¡£¡£
ÔÆÔÆÒ»À´ÐγÉÁËÔʼ·ûºÅΪs10£¬£¬£¬£¬£¬£¬£¬copy-prop·ûºÅΪs6£¬£¬£¬£¬£¬£¬£¬¼´s6->s10µÄ¼üÖµ¶Ô¡£¡£¡£¡£¡£¡£¡£ÆäÕ»»ØËÝλÓÚ£º
¹ýʧ¼üÖµ¶ÔÊÇÆ¾Ö¤Êý¾ÝÁ÷ÆÊÎöµÄ¹ýʧЧ¹ûµÃ³öµÄ¡£¡£¡£¡£¡£¡£¡£Ëæºó£¬£¬£¬£¬£¬£¬£¬Õâ¸ö¼üÖµ¶Ô±»¼ÓÈëÁËBlock 4ÖÐblockOptData->capturedValues->copyPropSyms£¬£¬£¬£¬£¬£¬£¬ÆäÕ»»ØËÝλÓÚ£º
Ëæºó£¬£¬£¬£¬£¬£¬£¬ÔÚJIT ForwardPassÕâÑùÒÔǰÏòºóµÄÓÅ»¯Àú³ÌÖУ¬£¬£¬£¬£¬£¬£¬Block 4µÄblockOptData->capturedValues±»ºÏ²¢¸øBlock 5£¬£¬£¬£¬£¬£¬£¬ÆäÖаüÀ¨s6->s10ÕâÒ»¼üÖµ¶Ô£¬£¬£¬£¬£¬£¬£¬ÆäÕ»»ØËÝλÓÚ£º
ÔÙÖ®ºó£¬£¬£¬£¬£¬£¬£¬ÔÚJIT BackwardPassÕâÑù´ÓºóÏòǰµÄÓÅ»¯Àú³ÌÖУ¬£¬£¬£¬£¬£¬£¬Block 5µÄupwardExposedUsesͨ¹ý»á¼ûblockOptData->capturedValues->copyPropSyms£¬£¬£¬£¬£¬£¬£¬°Ñs6->s10ÕâÒ»¼üÖµ¶Ô¼ÓÈë¡£¡£¡£¡£¡£¡£¡£ÆäÕ»»ØËÝλÓÚ£º
upwardExposedUsesÔÚ±àÒëÔÀíÖб»³ÆÎª¡°ÏòÉÏ̻¶µÄʹÓá±£¬£¬£¬£¬£¬£¬£¬ËüÊDZäÁ¿»îÔ¾ÐÔÆÊÎöµÄ¶Ô³ÆÀú³Ì¡£¡£¡£¡£¡£¡£¡£ËæºóÔÚ·´ÏòÈö²¥µÄÀú³ÌÖУ¬£¬£¬£¬£¬£¬£¬º¬ÓÐÉÏÊö¼üÖµ¶ÔµÄupwardExposedUses±»×ª´ï¸øBlock 4¡¢Block 3ºÍBlock 2¡£¡£¡£¡£¡£¡£¡£¶ø×÷ΪLoop HeaderµÄBlock 2½«ÆäupwardExposedUsesÓÃÓÚ»îÔ¾ÐÔÆÊÎöºÍºóÐøµÄ¼Ä´æÆ÷·ÖÅÉÀú³Ì¡£¡£¡£¡£¡£¡£¡£
ÉÏÊöÀú³Ì¿ÉÒÔͨ¹ýÏÂͼÀ´ÌåÏÖ¡£¡£¡£¡£¡£¡£¡£¿£¿£¿£¿ÉÒÔ¿´µ½£¬£¬£¬£¬£¬£¬£¬¹ýʧµÄÊý¾Ý¾ÓÉÁËÕýÏòÈö²¥ºÍ·´ÏòÈö²¥£¬£¬£¬£¬£¬£¬£¬×îÖÕÔÚÑ»·ÌåµÄËùÓйæÄ£¶¼±»ÎÛȾ¡£¡£¡£¡£¡£¡£¡£
Ëæºó£¬£¬£¬£¬£¬£¬£¬ÓÉÓÚÉÏÊö¹ýʧÊý¾Ý£¬£¬£¬£¬£¬£¬£¬ÔÚJITµÄ¼Ä´æÆ÷·ÖÅÉÀú³ÌΪs10ÅÌËã³öÁ˹ýʧµÄÉúÃüÖÜÆÚ£¬£¬£¬£¬£¬£¬£¬ÆäÉúÃüÖÜÆÚºá¿çÑ»·µÄ×îÏȵ½¿¢Ê¡£¡£¡£¡£¡£¡£¡£ÓÚÊÇÒõ²îÑô´í£¬£¬£¬£¬£¬£¬£¬JIT²åÈëÁËÒ»¸öMOVÖ¸Á£¬£¬£¬£¬£¬£¬ÐÎÈçMOV labelReg, mem£¬£¬£¬£¬£¬£¬£¬µ«²¢Ã»Óгõʼ»¯Æäinstr->src->m_offset£¬£¬£¬£¬£¬£¬£¬¸ÃֵʼÖÕΪ0¡£¡£¡£¡£¡£¡£¡£ÔÚ×îºóÌìÉúÆøÐµÂëµÄʱ¼ä£¬£¬£¬£¬£¬£¬£¬ÌìÉúÁËÒ»¸öÖ¸ÏòÕ»Ö¡Ö¸Õë¡¢Æ«ÒÆÎª0µÄ¶ÁÄÚ´æ²Ù×÷£¬£¬£¬£¬£¬£¬£¬ÌåÏÖΪ[EBP+0x0]»ò[RBP+0x0]¡£¡£¡£¡£¡£¡£¡£
ÕâÑù£¬£¬£¬£¬£¬£¬£¬Ò»¸ö·ÇÔ¤ÆÚµÄÄÚ´æ»á¼û°Ñ²»·¨µÄÊý¾Ý¶ÁÈëÁËJavaScriptÒýÇæÉÏÏÂÎÄ£¬£¬£¬£¬£¬£¬£¬ËæºóÔÚBailOut»òÆäËûÇéÐλáÒýÓõ½£¬£¬£¬£¬£¬£¬£¬ÕâÑùµÄ²»·¨Êý¾Ý½«»áÔì³ÉÀàÐÍ»ìÏý¡£¡£¡£¡£¡£¡£¡£
PART2
Ôì³ÉÉÏÊö¹ýʧÊý¾ÝÈö²¥µÄÔµ¹ÊÔÓÉÔÚÓÚInitConstÕâÒ»Ö¸Áî×ÅʵûÓÐÔÚChakraCoreµÄJIT´úÂëÖлñµÃ׼ȷµÄÊý¾ÝÁ÷ÆÊÎö£¬£¬£¬£¬£¬£¬£¬Òò´ËÔÚ΢ÈíµÄÐÞ¸´ÖУ¬£¬£¬£¬£¬£¬£¬ÔÚJIT¸Õ×îÏȽéÈëµÄʱ¼ä£¬£¬£¬£¬£¬£¬£¬InitConstÖ¸Áî¾Í±»Ìæ»»³ÉLd_AÖ¸Áî¡£¡£¡£¡£¡£¡£¡£
ChakraCoreÍêÕûʵÏÖÁ˶ÔLd_AÖ¸ÁîµÄÊý¾ÝÁ÷ÆÊÎö¡£¡£¡£¡£¡£¡£¡£´Ëʱ£¬£¬£¬£¬£¬£¬£¬ÔÚÆÊÎöForward PassÖУ¬£¬£¬£¬£¬£¬£¬·¢Ã÷Block 4ÖеļüÖµ¶Ô²»ÔÙÊÇs6->s10£¬£¬£¬£¬£¬£¬£¬¶øÊÇs10->s6£¬£¬£¬£¬£¬£¬£¬Ò²¾ÍÊÇ˵s10ÊÇÔʼ·ûºÅ£¬£¬£¬£¬£¬£¬£¬s6ÊÇÒýÓÃs10µÄcopy-prop·ûºÅ¡£¡£¡£¡£¡£¡£¡£ÔÆÔÆÒ»À´£¬£¬£¬£¬£¬£¬£¬×ÔÈ»²»»áÔì³É¹ýʧÊý¾ÝµÄÈö²¥¡£¡£¡£¡£¡£¡£¡£Î¢ÈíÔÚIE11ä¯ÀÀÆ÷ÖÐʹÓÃÁËÏàͬµÄ´úÂëÀ´ÐÞ²¹Õâ¸öÎó²î¡£¡£¡£¡£¡£¡£¡£
ÊÂʵÉÏ£¬£¬£¬£¬£¬£¬£¬ÔÚECMAScript 6±ê×¼ÖУ¬£¬£¬£¬£¬£¬£¬constÐÞÊηûÓÃÀ´ÌåÏÖÒ»¸ö±äÁ¿ÔÚ½ç˵֮ºó²»¿ÉÔÙ±»¸³Öµ£¬£¬£¬£¬£¬£¬£¬ÊÇÓï·¨ÌõÀíµÄÔ¼Êø£»£»£»£»£»£»£»¶øJavaScriptÒýÇæÖеÄJITÀú³ÌʼÖÕ±¬·¢ÔÚÚ¹ÊÍÖ´ÐÐÖ®ºó£¬£¬£¬£¬£¬£¬£¬ÈôÊÇconstÐÞÊηûµÄÔ¼ÊøÔÚÚ¹ÊÍÖ´Ðн׶α»Î¥·´£¬£¬£¬£¬£¬£¬£¬½«»áÁ¬Ã¦Í˳ö£¬£¬£¬£¬£¬£¬£¬²»»áÓÅ»¯Ö´ÐÐJITÀú³Ì¡£¡£¡£¡£¡£¡£¡£Òò´Ë£¬£¬£¬£¬£¬£¬£¬JITÀú³ÌÖ»ÐèҪ˼Á¿Êý¾ÝÁ÷ÎÊÌ⣬£¬£¬£¬£¬£¬£¬¶ø²»±ØË¼Á¿constÐÞÊηûµÄÔ¼Êø¡£¡£¡£¡£¡£¡£¡£ÓÉÓÚChakraCoreÔÚJITµÄÓÅ»¯½×¶ÎÓëÚ¹ÊÍÖ´Ðн׶ÎʹÓÃͳһÌ×ÖÐÐÄÓïÑÔ£¬£¬£¬£¬£¬£¬£¬²»¹ÜÊÇLd_AÕÕ¾ÉInitConst¶¼¼æÈÝJITµÄÈ«Àú³Ì£¬£¬£¬£¬£¬£¬£¬±¾Îó²î¿ÉÒÔÃ÷È·ÒÔΪÊÇÒ»¸öÓªÒµÂß¼Îó²î¡£¡£¡£¡£¡£¡£¡£
²Î¿¼Á´½Ó£º
1.https://portal.msrc.microsoft.com/en-us/security-guidance/acknowledgments
2.https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0768


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