黑客24小时在线接单网站

黑客24小时在线接单网站,黑客网站入口,黑客接单入口,黑客攻击

V8 引擎空指针引用漏洞的新型利用技术

详细介绍

上年,法国国家网络信息安全核心(NCSC)汇报了一个V8编译器中具有的安全性漏洞,接着Google便悄悄的修补了该漏洞。这一漏洞ID为1003286,漏洞的详细数据可以点一下【这儿】获得。依据漏洞汇报的叙述,这是一个空指针消除引入DoS漏洞,这一漏洞是一个不能利用的漏洞,而且只有根据WASM代码来开启。在深入研究以后,大家发觉这儿也有另一种开启该漏洞的方法,而且可以根据V8 JIT编译器过程来利用该漏洞完成进攻。

在这篇文章中,大家可能详细介绍该漏洞的利用关键技术,并演试怎样利用该漏洞完成远程控制代码实行。

漏洞形成原因

出自于代码提升层面的考虑到,V8 JIT编译器应用了节点图,并经过提升管路的一些环节降低节点图来转化成提升的远程服务器代码。并且这一节点图也适用WASM编译器,可以将WASM代码编译程序为远程服务器代码。

连接点在图上应用“Use”构造互相连接,如下所示所显示:


根据采用这类构造,连接点可以特定自身的导入连接点和客户连接点来降低图的遍历。Use构造重量包括了用以储存多种多样数据的比特犬字段名,如下所示所显示:


InputIndex字段名表明这一Use构造键入连接点的数据库索引,它可以用于精准定位客户连接点相对应的导入连接点。可是,这一字段名仅保证了17比特犬的空间来储存数据库索引,并且没有代码来检验这一限定是不是一切正常实行。因而,大家就可以应用很多键入连接点来创建一个图,让这种连接点偏向一个单一连接点,为此来造成整形外溢。例如,0x20002表明0x2为键入连接点数据库索引。

Use::input_ptr和Use::from函数公式都采用了这一InputIndex字段名来精准定位客户连接点及其相对应的导入连接点。


这将造成连接点、Use构造以及子字段名中间发生种类错乱的状况。

NCSC的分析工作人员应用WebAssembly搭建了一个PoC,并根据它来惩罚空指针解引问题。WASM代码提升全过程比JIT编译器的更为简易,因而操纵流程与JIT编译器对比也更为难,因此他们没法防止空指针解引的状况。

在研究流程中,大家发觉JIT代码可以让连接点有着很多键入连接点:


这一函数公式可以协助大家建立一个跟NCSC代码不一样的PoC,并取得成功惩罚漏洞,最后完成代码实行流的操纵。

漏洞利用

尽管这一漏洞存有于V8 JIT编译器当中,但它跟别的常用的JIT编译器漏洞有较大不一样。为了更好地取得成功利用该漏洞,大家要转化成可以利用原始漏洞的漏洞代码,随后利用他们来完成远程控制代码实行。

连接点、Use和Operator全是大家可以因而种类错乱的结构体,他们相对应的构造如下所示:


上边的Use::input_ptr和Use::from函数公式全是根据ReplaceWithValue函数来启用的,而这一函数公式是用于更换连接点值的:


这儿的“old_to”并不是连接点种类,反而是Use字段名:


假如use->prev为空,old_to->first_use则会被换成use->next。因为“old_to”实质为Use,那麼old_to->first_use就等同于CheckMap连接点的Operator。假如old_to->first_use被换成了use->next,那麼CheckMapNode->op->opcode便会变为use->next->bit_field。这时,CheckMap连接点的操作码opcode便会被别的opcode更换,并造成CheckMap连接点无效。这也是漏洞利用第一步的关键进攻情景:


依据这一实体模型,大家建立了以下代码:


在更换JSStrictEqual连接点以前的节点图恰好达到人们的规定:


如今,大家就可以在PACKED_DOUBLE_ELEMENTS和DICTIONARY_ELEMENTS二维数组中间造成种类错乱问题,并获得随意读写能力/addrof原语来完成远程控制代码实行了。

众多科学研究工作人员可以在Chrome v77版本号上开展详细的漏洞利用检测。

  • 评论列表:
  •  冢渊蒗幽
     发布于 2022-05-28 08:59:31  回复该评论
  • 罚漏洞,最后完成代码实行流的操纵。漏洞利用尽管这一漏洞存有于V8 JIT编译器当中,但它跟别的常用的JIT编译器漏洞有较大不一样。为了更好地取得成功利用该漏洞,大家要转化成可以利用原始漏洞的漏洞代码,随后利用他们来完成远程控制代码实
  •  莣萳掩吻
     发布于 2022-05-28 08:57:15  回复该评论
  • 完成远程控制代码实行。连接点、Use和Operator全是大家可以因而种类错乱的结构体,他们相对应的构造如下所示:上边的Use::input_ptr和Use::from函数公式全是根据ReplaceWithValue函数来启用的,而
  •  鸠骨顾执
     发布于 2022-05-28 08:04:35  回复该评论
  • LE_ELEMENTS和DICTIONARY_ELEMENTS二维数组中间造成种类错乱问题,并获得随意读写能力/addrof原语来完成远程控制代码实行了。众多科学研究工作人员可以在Chrome v77版本号上开

发表评论:

Powered By

Copyright Your WebSite.Some Rights Reserved.