这个漏洞算是护网期间比较出名的一个,蛮多人知道的,据我护网结束回来差不多也一个月了,得空复现一下
漏洞分析
漏洞存在于 Chrome 的 JS 引擎的 JIT 编译器 Turbofan 当中,Instruction Selector阶段在处理ChangeInt32ToInt64节点时,会先检查 node 的 input 节点,如果 input 节点的操作码是 Load,那么会根据该 input节点的 LoadRepresentation 和 MachineRepresentation进行一些特殊的处理,如果判断该 input 节点的 MachineRepresentation 的类型是kWord32, 那么会根据 LoadRepresentation 是有符号的还是无符号的选择对应的指令,如果是有符号的选择X64Movsxlq,在x86指令集中是有符号扩展,如果是无符号的选择X64Movl, 在x86指令集中是无符号扩展。
漏洞的根源是V8 对ChangeInt32ToInt64的假设是该节点的输入必定被解释为一个有符号的Int32的值,所以无论 LoadRepresentation如何,都应该使用X64Movsxlq指令。
影响范围
该漏洞影响x64架构的 Chrome,可导致Chrome 渲染进程远程代码执行,并使用了巧妙的手段绕过了 Chrome 内部的各种缓释措施,目前Chrome最新版89.0.4389.128已修复。
实际测试老版本的x64架构的Chrome或 Chromium 83、86、87、88 受此漏洞影响,存在漏洞的代码在 5 年前就被引入,最远可能影响至 Chrome 55 版本
利用条件:Chrome: <=89.0.4389.114,开启--no-sandbox 无沙盒模式
由于 Chrome 的沙箱机制,该漏洞仍需配合一个提权漏洞或沙箱漏洞才能在受害者的主机上执行任意代码,尚不能形成完整的攻击链路,但是鉴于市面上有些基于 Chromium 内核的应用关闭了沙箱功能,这些应用仍然有可能受到该漏洞的影响,产生实际的危害。
漏洞复现

最低0.47元/天 解锁文章
2776

被折叠的 条评论
为什么被折叠?



