编辑
2024-02-24
Paper
00
请注意,本文编写于 270 天前,最后修改于 270 天前,其中某些信息可能已经过时。

目录

ARCUS: Symbolic Root Cause Analysis of Exploits in Production Systems
作者
思路
堆栈溢出的检测思路
整数溢出检测思路
UAF和Double Free检测思路
格式化字符串检测思路

🤔

ARCUS: Symbolic Root Cause Analysis of Exploits in Production Systems

作者

  • Carter Yagemann - 佐治亚理工学院 - 漏洞检测、成因分析
  • Matthew Pruett - 佐治亚理工学院研究所 - 漏洞检测
  • Simon P. Chung - 佐治亚理工学院 - 漏洞检测
  • Kennon Bittick - 佐治亚理工学院研究所
  • Brendan Saltaformaggio - 佐治亚理工学院 - 漏洞检测、Web方向
  • Wenke Lee - 佐治亚理工学院研究所 - Fuzz

VulChecker: Graph-based Vulnerability Localization in Source Code

思路

作者针对漏洞的RCA和修复提出了一种新思路,即利用Intel PT技术,来监控程序的错误的控制流,一旦程序被打上错误标记,ARCUS会将其捕捉并发向分析系统。分析系统会利用快照将错误流重建然后根据一系列模板发现冲突点确定漏洞根本成因。主要的检测思路是,在重建快照之后,将攻击者可以控制的参数更改为符号值,然后进行执行观察符号值的传播,一旦符号值污染到关键参数则确定漏洞触发,而后向前寻找符号值是怎么传进来的,在哪里产生的,以确定漏洞根本成因。

基本定位流程为:

  1. 识别成为符号的代码指针:符号值向后传播即可
  2. 识别污染其成为符号值的基本块:生成控制流依赖图CDG来定位
  3. 寻找控制污染块执行的基本块
  4. 测试附加约束是否可以修复漏洞

堆栈溢出的检测思路

堆栈溢出根本特征是控制流劫持,在重建快照之后,沿着攻击者执行路径进行重建中间状态时观察PC是否被污染成为符号值即可。在发现PC被污染成为符号值之后即确定存在堆栈溢出。从这一点开始,模块查看先前的状态以确定是什么导致符号数据进入PC。由于劫持只能发生在间接控制流传输时,因此先前的状态必须执行以返回、间接调用或间接跳转结束的基本块

控制流被污染 + 之前的基本块为返回、间接调用或间接跳转结束的基本块

整数溢出检测思路

操作可能溢出 = 标记溢出的寄存器 + 寄存器传播到另外一个函数时 确定发生整数溢出

UAF和Double Free检测思路

内部针对所有的malloc和free维护一个bin并且记录大小,一旦违背操作规则则发生UAF和Double Free

格式化字符串检测思路

如果违背指向格式字符串的指针是具体的,且驻留在只读存储器中/字符串的内容是完全具体的/所有附加参数都指向映射的内存地址则为格式化字符串漏洞

本文作者:Du4t

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!