作者: Qixun Zhao(@S0rryMybad) of Qihoo 360 Vulcan Team
博客:https://blogs.projectmoon.pw/2019/01/13/Story1-Mom-What-Is-Zero-Multiplied-By-Infinity/
今天我們文章介紹的是CVE-2018-8391,對應的patch commit. 這是一個關於Loop循環的越界讀寫漏洞,漏洞的成因十分有趣.我們都知道零乘以無限等於零,但是開發人員在寫代碼的時候忽略了這樣的一種特殊情況.
在這裡我除了介紹漏洞本身以外,還介紹了在引入了Spectre Mitigation之後的一種通用的Array OOB RW利用方法.關於這個漏洞,我們還有後續的Story2.
實驗環境: chakraCore-2018-8-15附近的commit
0x0 關於Loop的優化
在之前的文章中我們已經簡單介紹過關於Loop的優化,在編譯器的優化過程中,我們需要把很多在Loop中不需要變化的指令hoist到LandingPad中,不然每次循環會執行很多沒必要的指令.而在針對數組的邊界檢查中,有一種特殊的優化處理方法,這種優化是針對在循環inductionVariable
並且用inductionVariable
進行數組訪問的情況.inductionVariable
就是循環中的自變量.舉個例子最直接:
转载请注明:IAMCOOL » Story1 Mom What Is Zero Multiplied By Infinity