🎉 親愛的廣場小夥伴們,福利不停,精彩不斷!目前廣場上這些熱門發帖贏獎活動火熱進行中,發帖越多,獎勵越多,快來 GET 你的專屬好禮吧!🚀
🆘 #Gate 2025年中社区盛典# |廣場十強內容達人評選
決戰時刻到!距離【2025年中社區盛典】廣場達人評選只剩 1 天,你喜愛的達人,就差你這一票衝進 C 位!在廣場發帖、點讚、評論就能攢助力值,幫 Ta 上榜的同時,你自己還能抽大獎!iPhone 16 Pro Max、金牛雕塑、潮流套裝、合約體驗券 等你抱走!
詳情 👉 https://www.gate.com/activities/community-vote
1️⃣ #晒出我的Alpha积分# |曬出 Alpha 積分&收益
Alpha 積分黨集合!帶話題曬出你的 Alpha 積分圖、空投中獎圖,即可瓜分 $200 Alpha 代幣盲盒,積分最高直接抱走 $100!分享攢分祕籍 / 兌換經驗,中獎率直線上升!
詳情 👉 https://www.gate.com/post/status/12763074
2️⃣ #ETH百万矿王争霸赛# |ETH 鏈上挖礦曬收益
礦工集結!帶話題曬出你的 Gate ETH 鏈上挖礦收益圖,瓜分 $400 曬圖獎池,收益榜第一獨享 $200!誰才是真 ETH 礦王?開曬見分曉!
詳情 👉 https://www.gate.com/pos
Chrome V8引擎新漏洞:泄露Uninitialized Oddball繞過沙箱
通過泄露Sentinel Value繞過Chrome V8 HardenProtect的內幕
前言
Sentinel value是算法中的一種特殊值,常用於循環或遞歸算法中作爲終止條件。Chrome源碼中廣泛使用了這類值。近期安全研究人員發現,通過泄露TheHole對象可以實現Chrome沙箱內的任意代碼執行。谷歌團隊隨後快速修復了這兩個在野漏洞。
然而,V8中還存在其他不應泄露到JavaScript中的原生對象。本文將討論一個新的對象:Uninitialized Oddball。這種繞過方法最早出現在Project0成員提交的Issue中,目前仍可在最新版V8中使用。
值得注意的是,這種方法具有較強的通用性:
在CVE-2021-30551中,首個POC就是泄露internal uninitialized oddball。
CVE-2022-1486的POC也直接泄露了UninitializedOddball。
一個未分配CVE的Issue同樣使用了這種方法。
這些案例足以說明該問題的重要性,值得重新審視可能受影響的軟件。
V8中的Sentinel Value
V8的大多數原生對象定義在v8/src/roots/roots.h文件中,它們在內存中依次相鄰排布。一旦這些不應泄露的原生對象被泄露到JavaScript中,就可能導致沙箱內任意代碼執行。
我們可以通過修改V8的native函數,將Uninitialized Oddball泄露到JavaScript中。具體方法是修改%TheHole()函數中相對isolate的偏移,使其返回Uninitialized Oddball。
繞過HardenType
利用Uninitialized Oddball可以實現相對任意讀寫。關鍵在於,優化後的read函數只檢查了obj的prop屬性,但沒有檢查obj.prop作爲key的value。這導致在計算時發生類型混淆,從而實現任意讀。
在x86架構下,由於沒有地址壓縮,任意讀寫是相對於整個進程的。雖然缺少了地址壓縮帶來的便利,但由於某些大型軟件文件較大,仍可以較高概率讀寫到目標內容。
PatchGap警告
這次PatchGap不僅涉及Issue1352549,還包括類似Issue1314616和Issue1216437在內的多個漏洞。新的繞過方法公開後,這些漏洞的利用難度大幅降低。黑客幾乎不需要額外研究就可以完成完整利用鏈。
總結
V8中還有許多其他Sentinel value,它們也可能存在類似問題。這給我們一些啓示:
其他uninitialized_Oddball泄露是否也可實現V8 RCE?
這類問題是否應被正式視爲安全問題?
Fuzzer測試中是否應將Sentinel value作爲變量加入?
無論如何,這類問題都會大大縮短黑客實現完整利用的週期,值得我們高度重視。