【原创缝隙】WebAssembly高危缝隙影响Edge和Safari浏览器
颁布功夫 2019-03-26缝隙概述
2018年10月,,,,,8827太阳集团ADLab发现浏览器WebAssembly�????????榇嬖诟呶7煜�,,,,,并第一功夫传递苹果和微软官方进行建复。。。。。。该缝隙位于对应浏览器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文件中用一个字节确定;;;;;;;随后凭据变量类型的长度从.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在内的常见浏览器产品往往将主题引擎组件开源,,,,,而开源代码仓库中的每次补丁提交均蕴含部门缝隙信息。。。。。。因而在厂商正式披露缝隙并为产品推送补丁之前,,,,,黑客有一个机关缝隙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号