Во второй части мы более глубоко исследовали конвейер компилятора V8. Изучили предназначение Ignition, Sparkplug и TurboFan в конвейере и рассмотрели такие темы, как байт-код V8, компиляция и оптимизация кода.
В этой части сосредоточимся на анализе и эксплойтинге уязвимости JIT-компилятора в TurboFan CVE-2018-17463. Эта уязвимость возникла из-за ненадлежащего моделирования побочных эффектов операции
JSCreateObject
на этапе понижающей оптимизации. Прежде чем мы приступим к эксплойтингу этого бага, нужно изучить фундаментальные примитивы эксплойтинга браузеров, такие как addrOf
и fakeObj
, а также узнать, как можно использовать этот баг для эксплойтинга type confusion.