8827Ì«Ñô¼¯ÍÅADLab£ºChrome ËÁÒâ´úÂëÖ´Ðзì϶·ÖÎö

°ä²¼¹¦·ò 2021-04-16

4ÔÂ13ÈÕ£¬£¬£¬£¬£¬¹ú±í°²È«×êÑÐÈËÔ±ÔÚÉ罻ýÌåÉϰ䲼ÁËChrome µÄ0Day ·ì϶£¨°Ý¼û²Î¿¼Á´½Ó[1]£©£¬£¬£¬£¬£¬·ì϶±àºÅΪCVE-2021-21220£¬£¬£¬£¬£¬²¢ÔÚgithubÉϹ«¿ªÁ˸÷ì϶µÄPOCÒÔ¼°ÀûÓôúÂ룬£¬£¬£¬£¬ÓйصÄÀûÓôúÂëÔڹعØÉ³ºÐµÄÇé¿öÏ¿ɴﵽԶ³Ì´úÂëÖ´ÐÓ×£¡£¡£¡£¡£ÓÉÓÚchromium Óйؿò¼ÜµÄ¿í·ºÀûÓ㬣¬£¬£¬£¬¸Ã·ì϶ÔÚÆäËûä¯ÀÀÆ÷»ò¾ç±¾ÒýÇæÖÐÈÔÓдæÔڵĿÉÄÜ¡£¡£¡£¡£¡£¸Ã·ì϶ÔÚchrome 90.0.4430.72°æ±¾ÒѾ­½¨¸´£¬£¬£¬£¬£¬ÌáÐÑ¿í´óÓû§ÊµÊ±¸üе½×îа汾£¨°Ý¼û²Î¿¼Á´½Ó[2]£©£¬£¬£¬£¬£¬ÒÔ¶ã±Ü¸Ã·ì϶´æÔڵĹ¥»÷·çÏÕ¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅADLab·ÖÎö·¢ÏÖ£¬£¬£¬£¬£¬¸Ã·ì϶´æÔÚÓÚChrome µÄJavaScript ½âÎöÒýÇæV8ÖУ¬£¬£¬£¬£¬POCÖØÒª´úÂëÈçÏ£º


1.png


ÔÚPOC line4Ö´ÐÐÒì»ò²Ù×÷,(2**31)^0=-2147483648¡£¡£¡£¡£¡£Æ¾¾ÝECMA³ß¶È£¨°Ý¼û²Î¿¼Á´½Ó[3]£©£¬£¬£¬£¬£¬Òì»òµÄÁ˾ÖÊÇ32λÕûÊý£º


2.png


ÔÚv8 SimplifiedLowering½×¶Î£¬£¬£¬£¬£¬Ôö³¤Á˶ÔÒì»òµÄÁ˾ÖÖ´ÐÐChangeInt32ToInt64µÄ²Ù×÷£º


3.png


SimplifiedLowering Ö´Ðк󣬣¬£¬£¬£¬Òì»òµÄÀàÐͱ»ÏóÕ÷ΪWord32:


4.png


ÔÚMachineOperatorOptimizer½×¶Î£¬£¬£¬£¬£¬ÓÉÒò¶øºÍ0×öÒì»ò£¬£¬£¬£¬£¬ËùÒÔÓÃ×ó²Ù×÷Êý°ü°ìÒì»ò²Ù×÷¡£¡£¡£¡£¡£


5.png


´ËʱµÄ½á¹¹Í¼ÈçÏ£¬£¬£¬£¬£¬Äܹ»¿´³öÒì»òµÄÁ˾ÖÊÇWord32|TypeUint32:


6.png


ÔÚÖ¸ÁîÑ¡Ôñʱ£¬£¬£¬£¬£¬¶ÔÓÚVisitChangeInt32ToInt64²Ù×÷£¬£¬£¬£¬£¬Æ¾¾ÝÆäÊäÈëÀàÐÍÑ¡Ôñ²Ù×÷Â룺


7.png


ËùÒÔ£¬£¬£¬£¬£¬ÕâÀïµÄ²Ù×÷ÂëÊÇkX64Movl²Ù×÷Â룬£¬£¬£¬£¬¸ÃÖ¸ÁîÔÚ½«Ô´²Ù×÷ÊýÒÆÖÁÖ÷ÕŵØÎ»Ê±²¢²»×ö·ûºÅÀ©´ó£¬£¬£¬£¬£¬ÕâÑùÔÚPOCline4ÖÐxµÄֵΪ2147483649£¬£¬£¬£¬£¬Òò¶øÔÚpoc line12µÄµØÎ»£¬£¬£¬£¬£¬±àÒëÆ÷ÆäʵʹÓõÄÊÇx=1µÄÖµ×÷Ϊ´´½¨Êý×éµÄ³¤¶È¡£¡£¡£¡£¡£ÕâÊDZàÒëÆ÷Î´ÔøÒâÁϵ½µÄÇé¿ö¡£¡£¡£¡£¡£


ÔÚ±äÁ¿µÄÁìÓò·ÖÎöÖУ¬£¬£¬£¬£¬±àÒëÆ÷ÒÔΪ´´½¨µÄÊý×鳤¶ÈÊÇ0:


8.png


 ÔÚÖ´ÐÐPOPʱ£¬£¬£¬£¬£¬»áÏÈÅжÏÊý×éµÄ³¤¶ÈÊÇ·ñΪ0£¬£¬£¬£¬£¬ÈôÊDz»ÊǾͻὫÆä³¤¶È¼õ1£º


9.png


ÓÉÓÚÊý×鳤¶È¹Ì¶¨£¬£¬£¬£¬£¬±àÒëÆ÷ÔÚLoadElimination µÄ¹ý³ÌÖÐ»á½øÐг£Á¿ÕÛµþ£¬£¬£¬£¬£¬ÔÚ´úÂëõè¾¶×ßµ½ÕâÀïµÄʱ³½Í¨¹ýStoreField²Ù×÷½«Êý×éµÄ³¤¶ÈÖ±½Ó¸³ÖµÎª-1£º


10.png

11.png


ÓÉÒò¶øsmi£¬£¬£¬£¬£¬ËùËùÒÔ0xfffffffe£º


12.png


´òÓ¡Êý×鳤¶È£º


13.png

Õâʱ³¬³¤µÄÊý×é¾Í³ö¯ÁË£¬£¬£¬£¬£¬ÈÎÓÉÄãÍæÁË¡£¡£¡£¡£¡£´Ó²¹¶¡¶Ô±ÈÉÏÀ´¿´£¨°Ý¼û²Î¿¼Á´½Ó[4]£©£¬£¬£¬£¬£¬¶ÔÓÚChangeInt32ToInt64½«ÆäÊäÈë×÷ΪÓзûºÅ¶Ô´ý£¬£¬£¬£¬£¬ÕâÑù¾ÍÔ¤·ÀÁ˸÷ì϶ͨ¹ý¸Ãõè¾¶´¥·¢¡£¡£¡£¡£¡£


14.png


¹ØÓÚÀûÓõIJ¿ÃÅ£¬£¬£¬£¬£¬¸ù»ùÊÇÀÏÌ×·£¬£¬£¬£¬£¬ÕâÀï¾Í²»ÔÙ׸Êö¡£¡£¡£¡£¡£


²Î¿¼Á´½Ó£º

[1]https://twitter.com/r4j0x00/status/1381643526010597380

[2]https://www.google.com/chrome/

[3]https://www.ecma-international.org/publications-and-standards/standards/ecma-262/

[4]https://chromium-review.googlesource.com/c/v8/v8/+/2820971/3/src/compiler/backend/x64/instruction-selector-x64.cc#1379


8827Ì«Ñô¼¯ÍÅ»ý¼«·ÀÓù³¢ÊÔÊÒ£¨ADLab£©


ADLab³ÉÁ¢ÓÚ1999Ä꣬£¬£¬£¬£¬ÊÇÖйú°²È«ÐÐÒµ×îÔç³ÉÁ¢µÄ¹¥·À¼¼Êõ×êÑг¢ÊÔÊÒÖ®Ò»£¬£¬£¬£¬£¬Î¢ÈíMAPP´òËãÖ÷Ìâ³ÉÔ±£¬£¬£¬£¬£¬¡°ºÚȸ¹¥»÷¡±¸ÅÏëÊ×ÍÆÕß¡£¡£¡£¡£¡£½ØÖ¹Ä¿Ç°£¬£¬£¬£¬£¬ADLabÒÑͨ¹ýCVEÀۼư䲼°²È«·ì϶½ü1100¸ö£¬£¬£¬£¬£¬Í¨¹ý CNVD/CNNVDÀۼư䲼°²È«·ì϶1000Óà¸ö£¬£¬£¬£¬£¬³ÖÐøÎ¬³Ö¹ú¼ÊÍøÂ簲ȫÁìÓòÒ»Á÷Ë®×¼¡£¡£¡£¡£¡£³¢ÊÔÊÒ×êÑз½Ïòº­¸Ç²Ù×÷ϵͳÓëÀûÓÃϵͳ°²È«×êÑÓ×¢ÖÇÄÜÖն˰²È«×êÑÓ×¢ÎïÁªÍøÖÇÄÜÉ豸°²È«×êÑÓ×¢Web°²È«×êÑÓ×¢¹¤¿ØÏµÍ³°²È«×êÑÓ×¢ÔÆ°²È«×êÑÓ×£¡£¡£¡£¡£×êÑгɾÍÀûÓÃÓÚ²úÆ·Ö÷Ìâ¼¼Êõ×êÑÓ×¢¹ú¶È³Áµã¿Æ¼¼ÏîÄ¿¹¥¹Ø¡¢×¨Òµ°²È«·þÎñµÈ¡£¡£¡£¡£¡£


adlab.jpg