Chrome V8引擎Sentinel Value泄露漏洞分析與防御

robot
摘要生成中

泄露Sentinel Value繞過Chrome V8 HardenProtect的技術分析

Sentinel value是算法中的特殊值,通常在循環或遞歸算法中作爲終止條件存在。Chrome源碼中有許多Sentinel value。近期有研究表明,通過泄露TheHole對象可以實現CVE-2021-38003和CVE-2022-1364的沙箱內任意代碼執行。谷歌團隊隨後對這兩個野外漏洞進行了更新。

除了TheHole對象外,V8中還有其他不應泄露到JavaScript中的原生對象。本文討論的是Uninitialized Oddball對象,這種繞過方法目前仍可用於最新版V8。

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

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

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

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

利用Uninitialized Oddball可以實現相對任意讀寫。優化後的JavaScript read函數會直接按JavaScript語義計算偏移,求取數組的數值,從而導致類型混淆,實現任意讀。

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

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

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

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

值得注意的是,這種方法不僅適用於Chrome,其他使用V8引擎的軟件也可能受影響。例如Skype目前仍未修復該漏洞。在x86下,由於沒有地址壓縮,任意讀寫是直接相對於整個進程的。

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

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

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

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

總的來說,通過泄露Sentinel value中的uninitialized_Oddball可以實現任意讀原語。V8中還有其他Sentinel value可能導致類似問題。建議將這些Sentinel value作爲變量加入fuzzer,以挖掘更多潛在的利用原語。無論是否被正式視爲安全問題,這類問題都會大大縮短黑客實現完整利用的週期。

SENC-8.96%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 5
  • 分享
留言
0/400
FUD_Vaccinatedvip
· 07-23 14:29
啊这 浏览器也有后门了
回復0
汤米老师vip
· 07-20 16:35
确实有点危险啊喂
回復0
破产豆豆vip
· 07-20 16:22
整天想着挖洞钻洞,有手刷题不香吗
回復0
GateUser-ccc36bc5vip
· 07-20 16:13
v8保护这么菜的吗?
回復0
稳定币守护者vip
· 07-20 16:09
哦哦 V8安全又出问题了啊
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)