Chrome V8引擎Sentinel Value泄露探究與安全風險分析

探究Chrome V8引擎中Sentinel Value泄露導致的安全風險

前言

Sentinel value是算法中的一種特殊值,通常用作循環或遞歸算法中的終止條件。Chrome源碼中廣泛使用了這種特殊值。近期有研究人員通過泄露TheHole對象實現了CVE-2021-38003和CVE-2022-1364的沙箱內任意代碼執行。谷歌團隊隨後迅速對這兩個漏洞進行了修復。

然而,除了TheHole對象外,V8中還存在其他不應泄露到JavaScript中的原生對象。本文將重點討論Uninitialized Oddball對象,並介紹如何利用它繞過V8的HardenProtect機制。值得注意的是,這種繞過方法目前仍然適用於最新版V8,尚未被修復。

V8中的Sentinel Value

V8的大部分原生對象定義在v8/src/roots/roots.h文件中,這些對象在內存中依次相鄰排布。一旦這些不應泄露到JavaScript中的原生對象被泄露出來,就可能導致沙箱內任意代碼執行。

爲了驗證這一點,我們可以通過修改V8的native函數,將Uninitialized Oddball泄露到JavaScript中。具體方法是修改%TheHole()函數中相對isolate的偏移,使其返回Uninitialized Oddball。

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

繞過HardenType保護

利用Uninitialized Oddball對象可以實現相對任意讀寫。在優化後的JavaScript代碼中,read函數沒有檢查以obj.prop爲key的Value,而是直接按照JavaScript語義計算偏移,獲取數組的值。這導致了在計算時發生類型混淆,從而實現任意讀。

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

對於任意寫操作,可以參考Issue1352549中的構造方法進行分析。建議的修復方案是在優化後的函數返回數組元素時,添加對數組map的檢查,避免直接計算偏移返回數組值。

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

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

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

PatchGap警告

分析Issue1352549後,我們發現一些軟件可能存在PatchGap問題。值得注意的是,截至目前Skype仍未修復該漏洞。在x86環境下,任意讀寫的實現會有所不同,因爲沒有地址壓縮,可以直接相對於整個進程進行操作。

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

這次PatchGap問題不僅涉及Issue1352549,新的繞過方法的公開還大大降低了利用Issue1314616和Issue1216437等漏洞的難度。黑客幾乎不需要任何研究成本,就可以完成以往任何泄露uninitialized_oddball漏洞的完整利用。

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

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

總結

本文簡要討論了通過泄露Sentinel value中的uninitialized_Oddball來實現任意讀原語的方法。V8中還存在許多其他Sentinel value,它們也可能導致類似的安全問題。這給我們以下啓示:

  1. 其他uninitialized_Oddball泄露是否也能輕易實現V8的遠程代碼執行。

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

  3. 考慮在fuzzer中將%TheHole/uninitialized_Oddball等Sentinel value作爲變量加入,以挖掘其他利用原語。

無論這類問題是否被正式視爲安全問題,它們都會顯著縮短黑客實現完整利用的週期。

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

SENC0.03%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 6
  • 分享
留言
0/400
FUD_Vaccinatedvip
· 07-26 03:20
又黑谷歌 这洞也太频繁了8
回復0
元宇宙包租婆vip
· 07-24 11:22
卧槽,别人家的浏览器漏洞都这么高级
回復0
SerNgmivip
· 07-23 05:34
真 v8 搞得我头疼...
回復0
GateUser-a606bf0cvip
· 07-23 05:34
嗯? 又是chrome搞事情?
回復0
稳定币焦虑症vip
· 07-23 05:15
浏览器安全洞好刺激!
回復0
Ponzi Detectorvip
· 07-23 05:11
卧槽 V8这漏洞玩挺大啊
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)