¡¾Ô­´´Îó²î¡¿WebAssembly¸ßΣÎó²îÓ°ÏìEdgeºÍSafariä¯ÀÀÆ÷

Ðû²¼Ê±¼ä 2019-03-26

Îó²î¸ÅÊö


2018Äê10Ô£¬ £¬£¬ £¬£¬ÈËÉú¾ÍÊDz©ADLab·¢Ã÷ä¯ÀÀÆ÷WebAssemblyÄ£¿£¿£¿ £¿é±£´æ¸ßΣÎó²î£¬ £¬£¬ £¬£¬²¢µÚһʱ¼äת´ïÆ»¹ûºÍ΢Èí¹Ù·½¾ÙÐÐÐÞ¸´¡£ ¡£¡£¸ÃÎó²îλÓÚ¶ÔÓ¦ä¯ÀÀÆ÷JavaScriptÒýÇæ(JavaScriptCore/ChakraCore)ÓëWebAssemblyÄ£¿£¿£¿ £¿éµÄ½Ó¿Ú£¬ £¬£¬ £¬£¬¿ÉͬʱӰÏìEdge¡¢Safariä¯ÀÀÆ÷¡£ ¡£¡£


2019Äê3ÔÂ25ÈÕ£¬ £¬£¬ £¬£¬Æ»¹ûÐû²¼ÁËÕë¶Ô¸ÃÎó²îµÄÇå¾²²¹¶¡£ ¡£¡£¨CVE-2019-6201£©£»£»£»Î¢ÈíµÄ¶ÔÓ¦Îó²î²¹¶¡ÒÑÓÚ2019Äê2ÔÂ12ÈÕÐû²¼¡£ ¡£¡£ÌáÐÑ¿í´óÓû§¾¡¿ì½«ä¯ÀÀÆ÷Éý¼¶µ½×îа汾¡£ ¡£¡£


Îó²îÓ°Ïì¹æÄ£


Microsoft Windows 10²Ù×÷ϵͳµÄEdgeä¯ÀÀÆ÷
Apple iOS/macOS²Ù×÷ϵͳµÄSafariä¯ÀÀÆ÷
ÆäËûƽ̨ÉÏ»ùÓÚWebKitµÄ×é¼þºÍ²úÆ·


Îó²î¼òÎö


¹¥»÷Õß¿Éͨ¹ýÈ«ÐĽṹµÄhtmlÍøÒ³£¬ £¬£¬ £¬£¬Ê¹Óû§ÔÚʹÓÃä¯ÀÀÆ÷»á¼ûÍøÒ³Ê±´¥·¢Îó²î¡£ ¡£¡£¸ÃÎó²îÔÚä¯ÀÀÆ÷Îó²îʹÓÃÖпÉÒÔÖ±½Ó×÷ΪfakeobjÔ­Óï¡£ ¡£¡£Í¨³£addrofÓëfakeobjÔ­ÓïÁ¬Ïµ¿ÉÒÔÖ±½Ó»ñµÃí§Òâ´úÂëÖ´ÐеÄÄÜÁ¦£¬ £¬£¬ £¬£¬ÔÚÒ»Ð©ÌØÊâÇéÐÎÏ£¬ £¬£¬ £¬£¬µ¥¶ÀʹÓÃfakeobjÔ­ÓïÒ²¿ÉÒÔÍê³ÉÎó²îʹÓᣠ¡£¡£


¸ÃÎó²îµÄ¼òÒªÆÊÎöÈçÏ£¨ÒÔSafari/WebKit CVE-2019-6201ΪÀý£©£º
WebAssemblyModuleRecord::linkÈÏÕæÆÊÎöWebAssemblyÄ£¿£¿£¿ £¿éÖеĸ÷¸ö½á¹¹£¬ £¬£¬ £¬£¬ÔÚÆÊÎöµ¼³ö±íʱ£¬ £¬£¬ £¬£¬ÓУº

ÈËÉú¾ÍÊDz©-×ðÁú¿­Ê±Öйú¹ÙÍø


ÔÚ¼ÓÔØµ¼³öµÄÈ«¾Ö±äÁ¿Ê±£¬ £¬£¬ £¬£¬ÓÐWasm::I32¡¢Wasm::I64¡¢Wasm::F32¡¢Wasm::F64ËÄÖÖÀàÐÍ£¬ £¬£¬ £¬£¬ÊÇWebAssembly±ê×¼ÖÐÖ¸¶¨µÄÊý¾ÝÀàÐÍ(descriptor)£¬ £¬£¬ £¬£¬»®·ÖÌåÏÖ32λ¡¢64λµÄÕûÊýºÍ¸¡µãÊý£¬ £¬£¬ £¬£¬ÔÚ.wasmÎļþÖÐÓÃÒ»¸ö×Ö½ÚÈ·¶¨£»£»£»Ëæºóƾ֤±äÁ¿ÀàÐ͵ij¤¶È´Ó.wasmÎļþÖмÌÐøÈ¡³öÏêϸÊý¾Ý(value)£¬ £¬£¬ £¬£¬·â×°³ÉJSValue¹©JavaScriptÉÏÏÂÎÄʹÓᣠ¡£¡£


ÒÔ¡°case Wasm::F64ΪÀý¡±£¬ £¬£¬ £¬£¬debug°æµÄ´úÂë»á¼ì²éÍâÀ´Êý¾ÝÊÇ·ñÊÇÒ»¸öÇкÏIEEE754±ê×¼µÄË«¾«¶È¸¡µãÊý£º

ÈËÉú¾ÍÊDz©-×ðÁú¿­Ê±Öйú¹ÙÍø


Release°æ±¾»áÔÚ±àÒëÀú³Ì½«isImpureNaNÕâÒ»¼ì²éÈ¥µô£¬ £¬£¬ £¬£¬´ËʱÍâÀ´Êý¾ÝÈôÊÇÊÇÒ»¸öNaN(Not a Number)£¬ £¬£¬ £¬£¬ÀýÈç0xffff000000888888£¬ £¬£¬ £¬£¬ÔÚͨ¹ý¼Ó·¨(+DoubleEncodeOffset)·â×°³ÉJSValueʱ»á±¬·¢Òç³ö£¬ £¬£¬ £¬£¬Äð³É0x888888¡£ ¡£¡£ÓÉÓÚSafariµÄboxing¹æÔò£¬ £¬£¬ £¬£¬ÕâÑùµÄÒ»¸öJSValue»á±»¿´³ÉÖ¸Õ룬 £¬£¬ £¬£¬Òò¶ø±¬·¢ÀàÐÍ»ìÏýÎó²î¡£ ¡£¡£


Îó²îÐÞ²¹ÔòÌìÕæÀÃÂþµØ°ÑÈ¥µôµÄ¼ì²é²¹»ØÀ´£º

ÈËÉú¾ÍÊDz©-×ðÁú¿­Ê±Öйú¹ÙÍø


Edgeä¯ÀÀÆ÷µÄÎó²îºÍ²¹¶¡Ò²ºÜÊÇÏàËÆ£º


ÈËÉú¾ÍÊDz©-×ðÁú¿­Ê±Öйú¹ÙÍø


¿ÉÒÔ¿´µ½£¬ £¬£¬ £¬£¬ÔÚWebAssembly±ê×¼µÄʵÏÖÖÐ΢Èí¡¢Æ»¹û·¸ÁËÀàËÆµÄ¹ýʧ£¬ £¬£¬ £¬£¬µ¼ÖÂÎó²îµÄÃæÄ¿Ò²¼«ÆäÏàËÆ£¬ £¬£¬ £¬£¬Îó²îÔ­ÀíÒ²²¢²»ÖØ´ó¡£ ¡£¡£¸ÃÎó²îÊÇÔÚWebAssembly¹¦Ð§ÊµÏÖʱֱ½ÓÒýÈëµÄ£¬ £¬£¬ £¬£¬ÔÚEdge¡¢SafariÖÐÒÑDZÔÚÁË2Äê¡£ ¡£¡£


ÁíÒ»·½Ã棬 £¬£¬ £¬£¬ÓÉÓÚJavaScriptÒýÇæÒ²ÎÞ·¨ÓÅÒìµØÊµÏÖi64ÀàÐ͵ÄWebAssembly±äÁ¿£¬ £¬£¬ £¬£¬Òò´ËÎÞÂÛÊÇSafari/WebKitÕÕ¾ÉEdge¶¼¾Ü¾ø¶Ô¸ÃÀàÐͼ°¾ÙÐд¦Öóͷ£¡£ ¡£¡£MDNÒ²ÔÚWebAssemblyµ¼³öº¯ÊýÕ½ÚÌáµ½£º¡°ÈôÊÇÄãʵÑéŲÓÃÒ»¸ö½ÓÊÜ»ò·µ»ØÒ»¸öi64ÀàÐ͵¼³öµÄwasmº¯Êý£¬ £¬£¬ £¬£¬ÏÖÔÚËü»áÅ׳öÒ»¸ö¹ýʧ£¬ £¬£¬ £¬£¬ÓÉÓÚJavaScriptûÓÐ׼ȷµÄ·½·¨À´±êʶһ¸öi64¡£ ¡£¡£²»¹ý£¬ £¬£¬ £¬£¬ÕâÔÚδÀ´¿ÉÄÜ»á¸Ä±ä¡ª¡ªÔÚδÀ´µÄ±ê×¼ÖУ¬ £¬£¬ £¬£¬½«Ë¼Á¿ÐµÄi64ÀàÐÍ¡£ ¡£¡£½ìʱ£¬ £¬£¬ £¬£¬wasm¿ÉÒÔʹÓÃËü¡±¡£ ¡£¡£


Õâ¸øÈËÉú¾ÍÊDz©Æôʾ£º


ÐÂÊÖÒÕ¡¢Ð±ê×¼»á´øÀ´ÐµĹ¥»÷Ãæ£¬ £¬£¬ £¬£¬±ê×¼µÄʵÏÖÀú³Ì¿ÉÄÜ»áÅãͬÇå¾²ÎÊÌâ¡£ ¡£¡£
²î±ðÄ£¿£¿£¿ £¿éñîÊÊʱ¿ÉÄÜ»áÍ»ÆÆÄ³Ä£¿£¿£¿ £¿éÄÚ²¿µÄ¼ÙÉ裬 £¬£¬ £¬£¬ÐèÒªÉóÉ÷¿´´ý¡£ ¡£¡£
ƾ֤¸ÃÎó²îµÄÌØµã£¬ £¬£¬ £¬£¬ÈËÉú¾ÍÊDz©ADLabÒÑÒ»Á¬·¢Ã÷ÁËÈô¸ÉÎó²îºÍ´úÂëÎÊÌ⣬ £¬£¬ £¬£¬²¢ÒÑת´ï³§É̾ÙÐÐÐÞ¸´¡£ ¡£¡£


Îó²îʱ¼äÖá


2018Äê10ÔÂ30ÈÕ£¬ £¬£¬ £¬£¬ÈËÉú¾ÍÊDz©ADLabÏòÆ»¹ûÌá½»Îó²î¡£ ¡£¡£
2018Äê11ÔÂ6ÈÕ£¬ £¬£¬ £¬£¬ÈËÉú¾ÍÊDz©ADLabÏò΢ÈíÌá½»Îó²î¡£ ¡£¡£
2018Äê11ÔÂ27ÈÕ£¬ £¬£¬ £¬£¬Æ»¹ûÔÚWebKit´úÂë¿âÖÐÐÞ¸´Îó²î¡£ ¡£¡£
2019Äê1ÔÂ24ÈÕ£¬ £¬£¬ £¬£¬Î¢ÈíÔÚChakraCore´úÂë¿âÖÐÐÞ¸´Îó²î¡£ ¡£¡£
2019Äê2ÔÂ12ÈÕ£¬ £¬£¬ £¬£¬Î¢ÈíΪEdgeä¯ÀÀÆ÷ÍÆËÍÇå¾²ÐÔ¸üУ¬ £¬£¬ £¬£¬²¢Åû¶CVE±àºÅ¡£ ¡£¡£
2019Äê3ÔÂ25ÈÕ£¬ £¬£¬ £¬£¬Æ»¹ûΪSafariä¯ÀÀÆ÷µÈ²úÆ·ÍÆËÍÇå¾²ÐÔ¸üУ¬ £¬£¬ £¬£¬²¢Åû¶CVE±àºÅ¡£ ¡£¡£


Çå¾²½¨Òé


×°Öó§ÉÌÍÆË͵ÄÇå¾²ÐÔ¸üУ¬ £¬£¬ £¬£¬¸üÐÂÖÁ×îа汾¡£ ¡£¡£
ΪÁËÀû±ãÉçÇøÐ¢Ë³´úÂ룬 £¬£¬ £¬£¬Edge¡¢SafariÔÚÄڵij£¼ûä¯ÀÀÆ÷²úÆ·ÍùÍù½«½¹µãÒýÇæ×é¼þ¿ªÔ´£¬ £¬£¬ £¬£¬¶ø¿ªÔ´´úÂë¿ÍÕ»ÖеÄÿ´Î²¹¶¡Ìá½»¾ù°üÀ¨²¿·ÖÎó²îÐÅÏ¢¡£ ¡£¡£Òò´ËÔÚ³§ÉÌÕýʽÅû¶Îó²î²¢Îª²úÆ·ÍÆËͲ¹¶¡Ö®Ç°£¬ £¬£¬ £¬£¬ºÚ¿ÍÓÐÒ»¸ö½á¹¹Îó²îPOCµÄ¹¥»÷ʱ¼ä´°¡£ ¡£¡£ÎªÁËËõСÕâһʱ¼ä´°£¬ £¬£¬ £¬£¬ÖÕ¶ËÓû§Ó¦ÊµÊ±×°Öó§ÉÌÌṩµÄÇå¾²ÐÔ¸üС£ ¡£¡£


²Î¿¼Á´½Ó£º

https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2019-0607
https://support.apple.com/en-us/HT209599
https://developer.mozilla.org/zh-CN/docs/WebAssembly/Exported_functions


ÈËÉú¾ÍÊDz©-×ðÁú¿­Ê±Öйú¹ÙÍø