¶«É­Æ½Ì¨ADLab£ºChrome ÈÎÒâ´úÂëÖ´ÐЩ¶´·ÖÎö

Ðû²¼Ê±¼ä 2021-04-16

4ÔÂ13ÈÕ£¬¹úÍâÄþ¾²Ñо¿ÈËÔ±ÔÚÉ罻ýÌåÉÏÐû²¼ÁËChrome µÄ0Day ©¶´£¨²Î¼û²Î¿¼Á´½Ó[1]£©£¬Â©¶´±àºÅΪCVE-2021-21220£¬²¢ÔÚgithubÉϹûÈ»Á˸鶴µÄPOCÒÔ¼°ÀûÓôúÂ룬Ïà¹ØµÄÀûÓôúÂëÔڹرÕɳºÐµÄÇé¿öÏ¿ɵ½´ïÔ¶³Ì´úÂëÖ´ÐС£ÓÉÓÚchromium Ïà¹Ø¿ò¼ÜµÄ¹ã·ºÓ¦Ó㬸鶴ÔÚÆäËûä¯ÀÀÆ÷»ò½Å±¾ÒýÇæÖÐÈÔÓдæÔڵĿÉÄÜ¡£¸Ã©¶´ÔÚchrome 90.0.4430.72°æ±¾ÒѾ­ÐÞ¸´£¬ÌáÐѹã´óÓû§¼°Ê±¸üе½×îа汾£¨²Î¼û²Î¿¼Á´½Ó[2]£©£¬ÒÔ¹æ±Ü¸Ã©¶´´æÔڵĹ¥»÷·çÏÕ¡£


¶«É­Æ½Ì¨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£¬Èç¹û²»ÊǾͻὫÆ䳤¶È¼õ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


¶«É­Æ½Ì¨»ý¼«·ÀÓùʵÑéÊÒ£¨ADLab£©


ADLab½¨Á¢ÓÚ1999Ä꣬ÊÇÖйúÄþ¾²ÐÐÒµ×îÔ罨Á¢µÄ¹¥·À¼¼ÊõÑо¿ÊµÑéÊÒÖ®Ò»£¬Î¢ÈíMAPP¼Æ»®ºËÐijÉÔ±£¬¡°ºÚȸ¹¥»÷¡±¿´·¨Ê×ÍÆÕß¡£½ØֹĿǰ£¬ADLabÒÑͨ¹ýCVEÀÛ¼ÆÐû²¼Äþ¾²Â©¶´½ü1100¸ö£¬Í¨¹ý CNVD/CNNVDÀÛ¼ÆÐû²¼Äþ¾²Â©¶´1000Óà¸ö£¬Á¬Ðø±£³Ö¹ú¼ÊÍøÂçÄþ¾²ÁìÓòÒ»Á÷Ë®×¼¡£ÊµÑéÊÒÑо¿Æ«Ïòº­¸Ç²Ù×÷ϵͳÓëÓ¦ÓÃϵͳÄþ¾²Ñо¿¡¢ÖÇÄÜÖÕ¶ËÄþ¾²Ñо¿¡¢ÎïÁªÍøÖÇÄÜÉ豸Äþ¾²Ñо¿¡¢WebÄþ¾²Ñо¿¡¢¹¤¿ØϵͳÄþ¾²Ñо¿¡¢ÔÆÄþ¾²Ñо¿¡£Ñо¿½á¹ûÓ¦ÓÃÓÚ²úÎïºËÐļ¼ÊõÑо¿¡¢¹ú¼ÒÖصã¿Æ¼¼ÏîÄ¿¹¥¹Ø¡¢×¨ÒµÄþ¾²·þÎñµÈ¡£


adlab.jpg