## Sentinel value在Chrome V8中的應用及其安全影響Sentinel value是算法中的特殊值,常用於循環或遞歸算法的終止條件。Chrome V8引擎源碼中廣泛使用了Sentinel value。近期,安全研究人員發現通過泄露特定Sentinel value對象可以實現Chrome沙箱內任意代碼執行。V8中存在多種原生對象不應泄露到JavaScript環境中。除了此前曝光的TheHole對象,Uninitialized Oddball對象的泄露同樣可導致安全問題。該方法最早出現在Issue1352549中,目前仍可用於最新版V8,谷歌尚未修復。該方法具有較強通用性:1. Issue1216437(CVE-2021-30551)中首次給出了泄露internal uninitialized oddball的POC。2. Issue1314616(CVE-2022-1486)中也直接泄露了UninitializedOddball對象。3. Issue1352549(無CVE)中完整給出了利用方法。這些案例表明,利用Sentinel value泄露可能影響多個軟件版本。V8的大部分原生對象定義在v8/src/roots/roots.h文件中,在內存中相鄰排布。一旦這些對象泄露到JavaScript環境,就可能實現沙箱逃逸。爲驗證該方法,可通過修改V8的native函數%TheHole()來泄露Uninitialized Oddball對象。利用該方法可以繞過V8的HardenType保護。關鍵在於優化後的JavaScript read函數沒有充分檢查對象屬性,導致類型混淆實現任意讀寫。建議修復方案是在優化後的函數返回數組元素時,添加對數組map的檢查,避免直接計算偏移返回數值。值得注意的是,Skype等軟件可能仍存在此類漏洞。在x86平台下,由於缺少地址壓縮,任意讀寫範圍更大。攻擊者可能利用此漏洞實現完整的利用鏈。除Uninitialized Oddball外,V8中還有多種Sentinel value可能存在類似風險。建議進一步研究其他Sentinel value泄露導致的安全問題,並考慮在模糊測試中加入相關場景。無論該類問題是否被正式列爲安全漏洞,它都可能大幅縮短攻擊者實現完整利用的週期,值得高度重視。
Chrome V8引擎Sentinel value泄露導致沙箱逃逸風險
Sentinel value在Chrome V8中的應用及其安全影響
Sentinel value是算法中的特殊值,常用於循環或遞歸算法的終止條件。Chrome V8引擎源碼中廣泛使用了Sentinel value。近期,安全研究人員發現通過泄露特定Sentinel value對象可以實現Chrome沙箱內任意代碼執行。
V8中存在多種原生對象不應泄露到JavaScript環境中。除了此前曝光的TheHole對象,Uninitialized Oddball對象的泄露同樣可導致安全問題。該方法最早出現在Issue1352549中,目前仍可用於最新版V8,谷歌尚未修復。
該方法具有較強通用性:
Issue1216437(CVE-2021-30551)中首次給出了泄露internal uninitialized oddball的POC。
Issue1314616(CVE-2022-1486)中也直接泄露了UninitializedOddball對象。
Issue1352549(無CVE)中完整給出了利用方法。
這些案例表明,利用Sentinel value泄露可能影響多個軟件版本。
V8的大部分原生對象定義在v8/src/roots/roots.h文件中,在內存中相鄰排布。一旦這些對象泄露到JavaScript環境,就可能實現沙箱逃逸。
爲驗證該方法,可通過修改V8的native函數%TheHole()來泄露Uninitialized Oddball對象。
利用該方法可以繞過V8的HardenType保護。關鍵在於優化後的JavaScript read函數沒有充分檢查對象屬性,導致類型混淆實現任意讀寫。
建議修復方案是在優化後的函數返回數組元素時,添加對數組map的檢查,避免直接計算偏移返回數值。
值得注意的是,Skype等軟件可能仍存在此類漏洞。在x86平台下,由於缺少地址壓縮,任意讀寫範圍更大。攻擊者可能利用此漏洞實現完整的利用鏈。
除Uninitialized Oddball外,V8中還有多種Sentinel value可能存在類似風險。建議進一步研究其他Sentinel value泄露導致的安全問題,並考慮在模糊測試中加入相關場景。
無論該類問題是否被正式列爲安全漏洞,它都可能大幅縮短攻擊者實現完整利用的週期,值得高度重視。