(LLInt): 启动解释器
Baseline JIT: 模版JIT
DFG JIT: 低延迟优化编译器
FTL JIT: 高吞吐量优化编译器
程序段首先执行在最低级的字节码解释器中, 随着代码执行的增多...漏洞利用
触发漏洞
要触发整数溢出问题, 我们需要构造出能使解析器执行2^32次push操作的wasm函数, POC最终选择使用之前提到的多值范式, 以及解析器对unreachable代码的处理相结合的方法...之前提到多值范式没有说的一点是, 它允许块拥有任意数量的返回值, 在JavaScriptCore的实现中也没有强制规定该数量的上限, 这允许我们构造具有大量返回值的块
解析器会执行一些非常基本的分析来确定代码是否为无法访问或是死代码...; 这两者的信息为我们提供了远程代码执行所需的信息泄漏
在获取了泄露的地址之后, 还不能立即开始ROP链的实施, 有一些关于内存布局的小问题
当前我们所要执行的wasm函数没有被分配任何栈地址空间, 所以理论上在该函数内应该能够写入最大负偏移量..., 在对应版本的系统中使用以下python方法即可, 总体思路就是debug JavaScriptCore, 从调试器中获取目标方法的第一个call指令, 到基地址的偏移量即为我们需要的leak_off