¡¾Ô´´·ì϶¡¿WebAssembly¸ßΣ·ì϶ӰÏìEdgeºÍSafariä¯ÀÀÆ÷
°ä²¼¹¦·ò 2019-03-26·ì϶¸ÅÊö
2018Äê10Ô£¬£¬£¬£¬£¬8827Ì«Ñô¼¯ÍÅADLab·¢ÏÖä¯ÀÀÆ÷WebAssemblyÄ£¿£¿£¿£¿£¿£¿£¿£¿é´æÔÚ¸ßΣ·ì϶£¬£¬£¬£¬£¬²¢µÚÒ»¹¦·ò´«µÝÆ»¹ûºÍ΢Èí¹Ù·½½øÐн¨¸´¡£¡£¡£¡£¡£¡£¸Ã·ì϶λÓÚ¶ÔÓ¦ä¯ÀÀÆ÷JavaScriptÒýÇæ(JavaScriptCore/ChakraCore)ÓëWebAssemblyÄ£¿£¿£¿£¿£¿£¿£¿£¿éµÄ½Ó¿Ú£¬£¬£¬£¬£¬¿ÉͬʱӰÏìEdge¡¢Safariä¯ÀÀÆ÷¡£¡£¡£¡£¡£¡£
·ì϶ӰÏìÁìÓò
Apple iOS/macOS²Ù×÷ϵͳµÄSafariä¯ÀÀÆ÷
ÆäËûƽ̨ÉÏ»ùÓÚWebKitµÄ×é¼þºÍ²úÆ·
·ì϶¼òÎö
¹¥»÷Õß¿Éͨ¹ý¾«ÐÄ»ú¹ØµÄhtmlÍøÒ³£¬£¬£¬£¬£¬Ê¹Óû§ÔÚʹÓÃä¯ÀÀÆ÷½Ó¼ûÍøÒ³Ê±´¥·¢·ì϶¡£¡£¡£¡£¡£¡£¸Ã·ì϶ÔÚä¯ÀÀÆ÷·ì϶ÀûÓÃÖÐÄܹ»Ö±½Ó×÷ΪfakeobjÔÓï¡£¡£¡£¡£¡£¡£Í¨³£addrofÓëfakeobjÔÓï½áºÏÄܹ»Ö±½Ó»ñµÃËÁÒâ´úÂëÖ´ÐеÄÄÜÁ¦£¬£¬£¬£¬£¬ÔÚÒ»Ð©ÌØÊâÇé¿öÏ£¬£¬£¬£¬£¬µ¥¶ÀʹÓÃfakeobjÔÓïÒ²Äܹ»ÊµÏÖ·ì϶ÀûÓᣡ£¡£¡£¡£¡£
WebAssemblyModuleRecord::linkÕÆ¹Ü½âÎöWebAssemblyÄ£¿£¿£¿£¿£¿£¿£¿£¿éÖеĸ÷¸ö½á¹¹£¬£¬£¬£¬£¬ÔÚ½âÎöµ¼³ö±íʱ£¬£¬£¬£¬£¬ÓУº

ÔÚ¼ÓÔØµ¼³öµÄÈ«¾Ö±äÁ¿Ê±£¬£¬£¬£¬£¬ÓÐWasm::I32¡¢Wasm::I64¡¢Wasm::F32¡¢Wasm::F64ËÄÖÖÀàÐÍ£¬£¬£¬£¬£¬ÊÇWebAssembly³ß¶ÈÖÐÖ¸¶¨µÄÊý¾ÝÀàÐÍ(descriptor)£¬£¬£¬£¬£¬±ðÀ밵ʾ32λ¡¢64λµÄÕûÊýºÍ¸¡µãÊý£¬£¬£¬£¬£¬ÔÚ.wasmÎļþÖÐÓÃÒ»¸ö×Ö½ÚÈ·¶¨£»£»£»£»£»£»£»Ëæºóƾ¾Ý±äÁ¿ÀàÐ͵ij¤¶È´Ó.wasmÎļþÖгÖÐøÈ¡³ö¾ßÌåÊý¾Ý(value)£¬£¬£¬£¬£¬·â×°³ÉJSValue¹©JavaScript¸ßµÍÎÄʹÓᣡ£¡£¡£¡£¡£
Release°æ±¾»áÔÚ±àÒë¹ý³Ì½«isImpureNaNÕâÒ»²é³È¥µô£¬£¬£¬£¬£¬´Ëʱ±íÀ´Êý¾ÝÈôÊÇÊÇÒ»¸öNaN(Not a Number)£¬£¬£¬£¬£¬ÀýÈç0xffff000000888888£¬£¬£¬£¬£¬ÔÚͨ¹ý¼Ó·¨(+DoubleEncodeOffset)·â×°³ÉJSValueʱ»á²úÉúÒç³ö£¬£¬£¬£¬£¬Ôì³É0x888888¡£¡£¡£¡£¡£¡£ÓÉÓÚSafariµÄboxing¹æ¶¨£¬£¬£¬£¬£¬ÕâÑùµÄÒ»¸öJSValue»á±»µ±×÷Ö¸Õ룬£¬£¬£¬£¬Òò¶ø²úÉúÀàÐÍ»ìºÏ·ì϶¡£¡£¡£¡£¡£¡£
Edgeä¯ÀÀÆ÷µÄ·ì϶ºÍ²¹¶¡Ò²¼«¶ÈÀàËÆ£º
Äܹ»¿´µ½£¬£¬£¬£¬£¬ÔÚWebAssembly³ß¶ÈµÄʵÏÖÖÐ΢Èí¡¢Æ»¹û·¸ÁËÀàËÆµÄÃýÎ󣬣¬£¬£¬£¬µ¼Ö·ì϶µÄÐÎòҲ¼«ÆäÀàËÆ£¬£¬£¬£¬£¬·ì϶µÀÀíÒ²²¢²»¸´ÔÓ¡£¡£¡£¡£¡£¡£¸Ã·ì϶ÊÇÔÚWebAssemblyÖ°ÄÜʵÏÖʱֱ½ÓÒýÈëµÄ£¬£¬£¬£¬£¬ÔÚEdge¡¢SafariÖÐÒÑÂñ·üÁË2Äê¡£¡£¡£¡£¡£¡£
ÁíÒ»·½Ã棬£¬£¬£¬£¬ÓÉÓÚJavaScriptÒýÇæÒ²ÎÞ·¨ÓÅÁ¼µØÊµÏÖi64ÀàÐ͵ÄWebAssembly±äÁ¿£¬£¬£¬£¬£¬Òò¶øÎÞÂÛÊÇSafari/WebKit»¹ÊÇEdge¶¼»Ø¾ø¶Ô¸ÃÀàÐͼ°½øÐд¦Öᣡ£¡£¡£¡£¡£MDNÒ²ÔÚWebAssemblyµ¼³öº¯ÊýÕ½ÚÌáµ½£º¡°ÈôÊÇÄã³¢ÊÔŲÓÃÒ»¸ö½ÓÊÜ»ò·µ»ØÒ»¸öi64ÀàÐ͵¼³öµÄwasmº¯Êý£¬£¬£¬£¬£¬Ä¿Ç°Ëü»áÅ׳öÒ»¸öÃýÎ󣬣¬£¬£¬£¬ÓÉÓÚJavaScriptûÓо«È·µÄ·½Ê½À´±êʶһ¸öi64¡£¡£¡£¡£¡£¡£²»Í⣬£¬£¬£¬£¬ÕâÔÚ½«À´¿ÉÄÜ»áŤת¡ª¡ªÔÚ½«À´µÄ³ß¶ÈÖУ¬£¬£¬£¬£¬½«Ë¼¿¼ÐµÄi64ÀàÐÍ¡£¡£¡£¡£¡£¡£½ìʱ£¬£¬£¬£¬£¬wasmÄܹ»Ê¹ÓÃËü¡±¡£¡£¡£¡£¡£¡£
Õâ¸ø8827Ì«Ñô¼¯ÍÅÆôµÏ£º
·ÖÆçÄ£¿£¿£¿£¿£¿£¿£¿£¿éñîӦʱ¿ÉÄÜ»áÍ»ÆÆÄ³Ä£¿£¿£¿£¿£¿£¿£¿£¿éÄÚ²¿µÄÈç¹û£¬£¬£¬£¬£¬±ØÒªÉóÉ÷¶Ô´ý¡£¡£¡£¡£¡£¡£
ƾ¾Ý¸Ã·ì϶µÄÌØµã£¬£¬£¬£¬£¬8827Ì«Ñô¼¯ÍÅADLabÒÑÂ½Ðø·¢ÏÖÁËÈô¸É·ì϶ºÍ´úÂëÎÊÌ⣬£¬£¬£¬£¬²¢ÒÑ´«µÝ³§É̽øÐн¨¸´¡£¡£¡£¡£¡£¡£
·ì϶¹¦·òÖá
2018Äê11ÔÂ6ÈÕ£¬£¬£¬£¬£¬8827Ì«Ñô¼¯ÍÅ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-0607https://support.apple.com/en-us/HT209599
https://developer.mozilla.org/zh-CN/docs/WebAssembly/Exported_functions


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