Chrome v8漏洞利用新方法:泄露Uninitialized Oddball實現沙箱逃逸

通過泄露Sentinel Value繞過Chrome v8 HardenProtect

前言

Sentinel value是算法中的一個特殊值,通常在循環或遞歸算法中作爲終止條件存在。Chrome源碼中有很多Sentinel value。之前有研究介紹了如何通過泄露TheHole對象實現沙箱內任意代碼執行。谷歌團隊隨後迅速更新了相關修復。

除了TheHole對象外,v8中還有很多其他不應泄漏到JS中的原生對象。本文將討論Uninitialized Oddball對象,該方法目前仍可用於最新版V8。值得注意的是,這種方法具有一定的通用性,曾在多個漏洞中出現。

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

V8中的Sentinel Value

v8的大部分原生對象定義在v8/src/roots/roots.h文件中,這些對象在內存中依次相鄰排布。一旦將不應泄露的原生對象泄露到Javascript中,即可實現沙箱內任意代碼執行。

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

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

繞過HardenType

利用Uninitialized Oddball可以實現相對任意讀寫。關鍵在於優化後的JavaScript read函數中,只檢查了obj的prop屬性是否正確,但沒有檢查以obj.prop爲key的Value,而是直接按JavaScript語義計算偏移,求取數組的數值。這導致在計算時造成類型混淆,實現任意讀。

由於Uninitialized Oddball在v8內存中排序靠前且更原始,相比TheHole對象更易於僞造,是TheHole緩解繞過修復後的首選方法。

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

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

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

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

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

PatchGap風險提示

除了關注歷史漏洞,還要注意廠商在基礎組件中悄悄修復的漏洞。目前Skype仍未修復該漏洞。x86和x64下利用方式略有不同,但都可實現任意讀寫。

這次PatchGap不僅涉及Issue1352549,新方法的公開也大大降低了類似漏洞的利用難度。黑客幾乎不需研究即可完成以往任何泄露Uninitialized Oddball漏洞的完整利用。

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

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

總結

v8中還有很多其他Sentinel value,可能存在類似問題。這給我們一些啓示:

  1. 其他Uninitialized Oddball泄露是否也易於實現v8 RCE。

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

  3. fuzz測試時或許應考慮將各種Sentinel value作爲變量加入。

無論如何,這類問題都會大大縮短黑客的完整利用週期。我們應對此保持警惕。

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

SENC0.43%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 6
  • 分享
留言
0/400
MetaMask受害者vip
· 19小時前
又被v8的坑整惨了
回復0
Gas_FeeTerapistvip
· 08-05 17:35
v8又玩砸了啊 安全性越来越拉了
回復0
绿蜡烛收集家vip
· 08-05 17:34
这漏洞还挺硬核的吧
回復0
闪电丢包侠vip
· 08-05 17:32
这bug又被搞定了 我们的机房得赶紧修啊
回復0
链上吃瓜群众vip
· 08-05 17:32
啊这...打洞哥又发新活了
回復0
无常损失爱好者vip
· 08-05 17:31
我擦 v8竟然还有这种漏洞
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)