HOEE


综述

paper: https://link.springer.com/content/pdf/10.1186/s42400-024-00244-6.pdf

论文解决的问题:对于一个堆溢出漏洞,评估poc的可利用性;

现实中遇到的问题:有时候即便堆溢出能够覆盖一个敏感指针,但是也很难完成控制流劫持等复杂的攻击动作;

挑战:

  1. 如何恢复poc的堆布局并识别victim object;
  2. 如何确定敏感指针和输入之间的关系;
  3. 如何确定敏感指针是否会被解引用;

design

动态信息收集

指令流:call记录参数寄存器的信息、ret记录返回值

内存读写:读写内存指令记录内存地址和内容

动态段:

对象类型分析

利用源代码进行静态分析。

该组件的输入是源代码,输出是内存对象的数据布局以及数据类型和源代码位置的关系;

提炼数据结构的定义,识别出来敏感指针/函数指针;然后是找哪些数据类型被引用了;

poc上下文分析

污点分析器:在本地程序的指令流上进行分析(排除了第三方库和syscall);

动态堆分析:解析堆相关的函数;进一步识别size和block的内存范围;通过分配函数的返回值识别block的起始地址,通过参数识别size;

溢出上下文分析:收集所有读写指针的真实类型,对于字节读写对象,读写对象的类型应该一致,

可利用性评估

TODO


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