介绍
该漏洞源于V8的Maglev编译器,特别是它如何编译具有父类的类。当涉及到父类和构造函数时,编译器需要查找它们,而在此过程中引入了漏洞。在本文中,我们将深入探讨这个漏洞的细节以及如何利用它。
初步细节
V8编译管道V8 JavaScript引擎的编译管道包括多个组件,包括Ignition(解释器)、Sparkplug(基线编译器)、Maglev(中间优化编译器)和TurboFan(优化编译器)。Ignition从解析的抽象语法树生成字节码,而Sparkplug和Maglev处理基线和中间优化。TurboFan是最后的阶段,执行动态分析并生成优化的编译代码。
Maglev:中间优化器
Maglev位于Sparkplug和TurboFan之间,专注于进行快速的静态优化而无需进行动态分析。它依赖于解释器的反馈来在静态情况下优化代码,创建称为Maglev IR的控制流图(CFG)。
漏洞分析
漏洞是在编译具有父类的类时产生的。Maglev编译器尝试查找父类和构造函数时,引入了这个漏洞。利用此漏洞允许未经授权访问特定内存区域,并打开执行任意代码的可能性。
攻击机制
为了利用此漏洞,攻击者可以利用Maglev编译器的错误查找过程。通过精心制作JavaScript代码,攻击者触发一个包含父类的类的编译错误,从而未经授权地访问敏感内存区域。
复现步骤
-
触发编译错误:制作JavaScript代码,触发包含父类的类的编译错误过程。
-
内存访问:利用漏洞未经授权地访问特定内存区域。
-
任意代码执行:利用受损的内存访问在Chrome环境中执行任意代码。
结论
Chrome安全团队迅速解决了这个漏洞,并在2024年1月16日发布了更新。通过分配的CVE-2024-0517,该补丁纠正了Maglev编译器中的错误编译过程。这一事件突显了在保护复杂系统如V8 JavaScript引擎方面的持续挑战,并强调了迅速响应以减轻潜在风险的重要性。作为用户,保持对浏览器的及时更新有助于防范此类漏洞。
感谢您抽出
.
.
来阅读本文
点它,分享点赞在看都在这里
原文始发于微信公众号(Ots安全):Google Chrome V8 CVE-2024-0517 越界写入代码执行