深入分析KEPLER


前提条件

开了很多保护:SMAP\SMEP\canary、kaslr、kpti、cr4、STATIC_USERMODEHELPER;

没有开启CFI;

有一个导致CFHP的poc;

假设这个漏洞已经通过人工分析或者动态分析找到了,我们只关注评估这个漏洞;

假设有一个有限的地址泄露原语:包括内核代码段和堆地址;

blooming gadget

使用前提

blooming gadget是利用了一些类似于面向对象的代码,rdi指向一个对象,然后从里边取参数、取函数指针实现间接调用,因此blooming gaddget需要在rdi已经被控制的前提下才能发挥作用,这种rdi+rip被控制的原语应该很好的到,因为本论文的一个insight是崩溃瞬间应该有潜在被控制的寄存器,这样就可以通过一个间接调用gadget实现上述原语的转化,即便是一个也没有,那就走pt_regs:

因此我们是否可以认为,KEPLER开始工作的起点应该是rdi+rip的原语已经被人工构造出来了呢?

寻找blooming gadget


文章作者: q1ming
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 q1ming !
  目录