📢 Gate廣場專屬 #WXTM创作大赛# 正式開啓!
聚焦 CandyDrop 第59期 —— MinoTari (WXTM),總獎池 70,000 枚 WXTM 等你贏!
🎯 關於 MinoTari (WXTM)
Tari 是一個以數字資產爲核心的區塊鏈協議,由 Rust 構建,致力於爲創作者提供設計全新數字體驗的平台。
通過 Tari,數字稀缺資產(如收藏品、遊戲資產等)將成爲創作者拓展商業價值的新方式。
🎨 活動時間:
2025年8月7日 17:00 - 8月12日 24:00(UTC+8)
📌 參與方式:
在 Gate廣場發布與 WXTM 或相關活動(充值 / 交易 / CandyDrop)相關的原創內容
內容不少於 100 字,形式不限(觀點分析、教程分享、圖文創意等)
添加標籤: #WXTM创作大赛# 和 #WXTM#
附本人活動截圖(如充值記錄、交易頁面或 CandyDrop 報名圖)
🏆 獎勵設置(共計 70,000 枚 WXTM):
一等獎(1名):20,000 枚 WXTM
二等獎(3名):10,000 枚 WXTM
三等獎(10名):2,000 枚 WXTM
📋 評選標準:
內容質量(主題相關、邏輯清晰、有深度)
用戶互動熱度(點讚、評論)
附帶參與截圖者優先
📄 活動說明:
內容必須原創,禁止抄襲和小號刷量行爲
獲獎用戶需完成 Gate廣場實名
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尚未針對此進行修復。
值得注意的是,該方法具有較強通用性:
Issue1216437(CVE-2021-30551)中首次給出了泄露internal uninitialized oddball的poc。
Issue1314616(CVE-2022-1486)中也直接泄露了UninitializedOddball對象。
Issue1352549(暫無CVE)展示了該方法的完整利用鏈。
這些案例表明,該繞過方法可能影響多個軟件版本。截至目前,Skype等軟件仍未修復該漏洞。
V8中的Sentinel Value
V8源碼中定義了大量原生對象,包括多種Sentinel value。這些對象在內存中依次相鄰排布。一旦將不應泄露的原生對象暴露給JavaScript,就可能實現沙箱內任意代碼執行。
爲驗證該方法,我們可以修改V8的%TheHole()函數,使其返回Uninitialized Oddball對象。
繞過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的值就直接計算偏移,造成類型混淆,實現任意讀。
建議修復方案:在優化後的函數返回數組元素時,添加對數組map的檢查,避免直接計算偏移。
PatchGap警告
該繞過方法不僅影響歷史漏洞,還可能影響當前軟件。例如Skype目前仍未修復此問題。在x86平台下,由於缺少地址壓縮,任意讀寫範圍更大。
這次PatchGap不僅涉及Issue1352549,還使得類似Issue1314616和Issue1216437的利用難度大幅降低。建議廠商全面排查相關漏洞。
總結
本文介紹了利用Uninitialized Oddball實現V8任意讀的方法。V8中還有其他多種Sentinel value,可能存在類似安全隱患。建議進一步研究:
無論該問題是否被正式列爲安全漏洞,它都可能大大縮短黑客的完整利用週期。希望本文能引起相關方面的重視。