Chrome v8 HardenProtect繞過:利用Sentinel Value實現任意代碼執行

Sentinel Value與Chrome v8 HardenProtect繞過

Sentinel value是算法中的特殊值,常用於循環或遞歸算法的終止條件。Chrome源碼中廣泛使用了這類特殊值。近期有研究表明,通過泄露某些Sentinel value對象可實現Chrome沙箱內任意代碼執行。

本文將探討利用Uninitialized Oddball對象繞過Chrome v8 HardenProtect機制的方法。該方法最早由Project0成員在Issue1352549中提出,目前仍可用於最新版V8,Google尚未針對此進行修復。

值得注意的是,該方法具有較強通用性:

  1. Issue1216437(CVE-2021-30551)中首次給出了泄露internal uninitialized oddball的poc。

  2. Issue1314616(CVE-2022-1486)中也直接泄露了UninitializedOddball對象。

  3. Issue1352549(暫無CVE)展示了該方法的完整利用鏈。

這些案例表明,該繞過方法可能影響多個軟件版本。截至目前,Skype等軟件仍未修復該漏洞。

V8中的Sentinel Value

V8源碼中定義了大量原生對象,包括多種Sentinel value。這些對象在內存中依次相鄰排布。一旦將不應泄露的原生對象暴露給JavaScript,就可能實現沙箱內任意代碼執行。

爲驗證該方法,我們可以修改V8的%TheHole()函數,使其返回Uninitialized Oddball對象。

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

繞過HardenType

以下代碼展示了如何利用泄露的Uninitialized Oddball對象實現任意讀:

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

let uninitialized_oddball = %GetUninitialized(); let ab = new ArrayBuffer(8); let f64 = new Float64Array(ab); let u32 = new Uint32Array(ab);

for (let i = 0; i < 0x10000; i++) { read({prop: 1.1}, 0);
}

%OptimizeFunctionOnNextCall(read);

let val = read({prop: uninitialized_oddball}, 0x1234); f64[0] = val; console.log(u32[0].toString(16), u32[1].toString(16));

優化後的read函數匯編代碼顯示,函數僅檢查了obj的prop屬性,未檢查obj.prop的值就直接計算偏移,造成類型混淆,實現任意讀。

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

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

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

PatchGap警告

該繞過方法不僅影響歷史漏洞,還可能影響當前軟件。例如Skype目前仍未修復此問題。在x86平台下,由於缺少地址壓縮,任意讀寫範圍更大。

這次PatchGap不僅涉及Issue1352549,還使得類似Issue1314616和Issue1216437的利用難度大幅降低。建議廠商全面排查相關漏洞。

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

總結

本文介紹了利用Uninitialized Oddball實現V8任意讀的方法。V8中還有其他多種Sentinel value,可能存在類似安全隱患。建議進一步研究:

  1. 其他Sentinel value泄露是否可實現V8 RCE
  2. 將Sentinel value作爲變量加入Fuzzer,挖掘新的利用原語
  3. 正視此類問題可能帶來的安全風險

無論該問題是否被正式列爲安全漏洞,它都可能大大縮短黑客的完整利用週期。希望本文能引起相關方面的重視。

獨家揭祕通過泄露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

SENC-4.49%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 6
  • 轉發
  • 分享
留言
0/400
寒冬取暖喵vip
· 4小時前
强强细节帖必须赞
回復0
StakeOrRegretvip
· 08-08 15:35
又发现浏览器隐患了
回復0
Layer_ZeroHerovip
· 08-07 02:24
有点炫酷的漏洞
回復0
Web3产品经理vip
· 08-07 02:23
这里有一个超级风险的边缘案例
查看原文回復0
幽灵钱包侦探vip
· 08-07 02:11
漏洞真是防不胜防
回復0
UnluckyLemurvip
· 08-07 02:04
这漏洞有大水分了
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)