🤔
VulChecker: Graph-based Vulnerability Localization in Source Code
作者针对漏洞的RCA和修复提出了一种新思路,即利用Intel PT技术,来监控程序的错误的控制流,一旦程序被打上错误标记,ARCUS会将其捕捉并发向分析系统。分析系统会利用快照将错误流重建然后根据一系列模板发现冲突点确定漏洞根本成因。主要的检测思路是,在重建快照之后,将攻击者可以控制的参数更改为符号值,然后进行执行观察符号值的传播,一旦符号值污染到关键参数则确定漏洞触发,而后向前寻找符号值是怎么传进来的,在哪里产生的,以确定漏洞根本成因。
基本定位流程为:
堆栈溢出根本特征是控制流劫持,在重建快照之后,沿着攻击者执行路径进行重建中间状态时观察PC是否被污染成为符号值即可。在发现PC被污染成为符号值之后即确定存在堆栈溢出。从这一点开始,模块查看先前的状态以确定是什么导致符号数据进入PC。由于劫持只能发生在间接控制流传输时,因此先前的状态必须执行以返回、间接调用或间接跳转结束的基本块
控制流被污染 + 之前的基本块为返回、间接调用或间接跳转结束的基本块
操作可能溢出 = 标记溢出的寄存器 + 寄存器传播到另外一个函数时 确定发生整数溢出
内部针对所有的malloc和free维护一个bin并且记录大小,一旦违背操作规则则发生UAF和Double Free
如果违背指向格式字符串的指针是具体的,且驻留在只读存储器中/字符串的内容是完全具体的/所有附加参数都指向映射的内存地址则为格式化字符串漏洞
本文作者:Du4t
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!