Logo

论文笔记:AEG: Automatic Exploit Generation

January 9, 2026

本文是全世界第一篇关于自动化利用生成(Automatic Exploit Generation)的论文。实现了如下workflow:

从源代码出发,自动发现漏洞 → 判断是否可利用 → 自动生成可用的控制流劫持 exploit

创新点:

把漏洞利用建模成了形式化问题——漏洞+利用:

bug(ϵ)exploit(ϵ)\prod {bug} (\epsilon) \land \prod {exploit} (\epsilon)

Π_bug:程序进入不安全状态(如越界写、格式化字符串)

Π_exploit:该不安全状态可被用来劫持控制流(如覆盖返回地址并跳转到 shellcode)

最大贡献:

Preconditioned Symbolic Execution

在符号执行前加入“可利用性相关的预条件”,只探索“可能 exploitable”的路径

极大减少状态空间,是 AEG 能跑真实程序的关键原因

路径搜索优先级:

  • 有小bug的路径先考虑。
  • 循环跑满

系统整体流程:

源码→ LLVM IR + 二进制(用来算布局等)→ 符号执行找到bug → 动态二进制分析(漏洞buffer地址,返回地址,栈内容)→ 自动构造约束(ret2stack/libc/format string)→ 约束求解 + 实际验证

缺点:

只能处理传统漏洞:栈溢出,格式化字符串利用,本地/远程exploit,自动选择shellcode,NOP sled, 栈修复。但不处理ASLR,DEP/NX,PIE / CFI等现代化防护。

comment

留言 / 评论

如果暂时没有看到评论,请点击下方按钮重新加载。