DeFi 智能合约的安全审计正处于一个结构性瓶颈期。
每年数十亿美元因合约漏洞而流失,但安全社区面临一个更深层的问题:**识别漏洞和证明漏洞可被利用,是两个完全不同的任务。** 手动构造概念验证(PoC)的劳动强度极高,导致大多数已披露的漏洞从未被真正验证——protocol 在缓解措施应用之前长期暴露于未知风险中。
2026年5月4日,Liang 等研究者发表的 EvoPoC 系统,尝试用一套知识驱动的智能体架构来系统性地解决这个问题。本文基于该论文(arXiv:2605.02868),对其技术机制、验证框架和实验结果进行结构性分析。
---
## 一、问题结构:为什么传统方法不够
DeFi 安全审计的传统 pipeline 由三个环节组成:
```
┌────────────────────────────────────────────────────────────┐
│ 传统审计 Pipeline │
├────────────────────────────────────────────────────────────┤
│ │
│ 代码审查 ──→ 漏洞识别 ──→ PoC 构造 ──→ 验证 │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ 人工/工具 模式匹配 手动编码 人工运行 │
│ 覆盖率有限 误报率高 成功率低 经济可行性未知 │
│ │
└────────────────────────────────────────────────────────────┘
```
每个环节都存在系统性缺陷:
**代码审查**:人工审计师一天能仔细阅读几千行代码,但复杂 protocol 可达数十万行。工具化扫描(如静态分析)覆盖率高但误报率高。
**漏洞识别**:发现"这里看起来可疑"不等于"这里可以被利用"。传统模糊测试器(fuzzer)随机生成输入来触发异常,但异常≠可利用漏洞。
**PoC 构造**:这是最大的瓶颈。将"可疑代码模式"转化为"能实际执行并造成损害的代码",需要深入理解协议语义、失败根因和攻击原语的组合逻辑。
**验证**:即使 PoC 能运行,它是否能在经济层面产生利润?大多数传统方法不关心这个问题。
> **Annotation: 模糊测试(Fuzzing)**
>
> 一种自动化测试技术,通过向程序输入大量随机或半随机数据来发现异常行为。在智能合约领域,模糊测试器(如 Echidna、ItyFuzz)自动生成交易序列来触发合约的意外状态。模糊测试擅长发现崩溃或异常,但无法自动判断异常是否可被利用来窃取资产。
---
## 二、核心洞察:Exploit Synthesis = Structured Reasoning
EvoPoC 的核心方法论建立在这样一个反直觉的洞察之上:
$$\text{Exploit Synthesis} \neq \text{Code Generation}$$
漏洞利用合成不是代码生成任务,而是**结构化推理问题**。它需要三种 grounded knowledge:
$$\text{Exploit} = f(\underbrace{\text{Protocol Semantics}}_{\text{协议语义}}, \underbrace{\text{Failure Root Cause}}_{\text{失败根因}}, \underbrace{\text{Exploit Primitives}}_{\text{攻击原语}})$$
| 知识类型 | 含义 | 示例 |
|:---------|:-----|:-----|
| **协议语义** | 合约在业务层面的功能 | AMM的定价公式、闪电贷的还款约束 |
| **失败根因** | 漏洞产生的底层原因 | check-effects-interaction模式缺失、预言机更新延迟 |
| **攻击原语** | 可复用的攻击手法 | 重入调用、价格操纵、治理攻击 |
传统方法(包括简单的 LLM prompt)把 exploit synthesis 当作代码生成——给模型一段有漏洞的代码,让它"写一段攻击代码"。这忽略了上述三种知识之间的结构化关系。
EvoPoC 的做法是:**先构建知识结构,再基于结构进行推理。**
---
## 三、HKG:分层知识图谱架构
EvoPoC 将三种知识组织为一个 **Hierarchical Knowledge Graph(HKG)**,作为 LLM 引导多跳推理的结构化记忆。
```
┌────────────────────────────────────────────────────────────┐
│ HKG 三层架构 │
├────────────────────────────────────────────────────────────┤
│ │
│ L3: 协议语义层 (Protocol Semantics) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ • DeFi 原语: AMM, 闪电贷, 治理代币, 流动性挖矿 │ │
│ │ • 交互模式: deposit→borrow→repay→withdraw │ │
│ │ • 经济约束: 抵押率阈值, 清算溢价, 滑点容忍度 │ │
│ └─────────────────────────────────────────────────────┘ │
│ ↕ 映射 │
│ L2: 攻击原语层 (Exploit Primitives) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ • 重入攻击 (Reentrancy) │ │
│ │ • 价格预言机操纵 (Oracle Manipulation) │ │
│ │ • 权限控制绕过 (Access Control Bypass) │ │
│ │ • front-running / sandwich attack │ │
│ │ • 治理闪电贷攻击 (Governance Flash Loan Attack) │ │
│ └─────────────────────────────────────────────────────┘ │
│ ↕ 实例化 │
│ L1: 具体模式层 (Concrete Patterns) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ • 代码片段: 某合约的 fallback 函数实现 │ │
│ │ • 历史攻击: Poly Network 跨链验证绕过 ($611M) │ │
│ │ • 历史攻击: Beanstalk 治理闪电贷攻击 ($182M) │ │
│ │ • 审计发现: 某项目的 reentrancy guard 缺失模式 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ LLM 多跳推理: L1 异常模式 → L2 攻击原语 → L3 语义约束 │
│ ↓ │
│ 合成满足所有约束的 exploit │
│ │
└────────────────────────────────────────────────────────────┘
```
HKG 的关键设计决策是**分层抽象**。底层(L1)是具体的、可执行的代码片段和攻击实例;中层(L2)是可复用的攻击原语;顶层(L3)是协议层面的业务语义。
LLM 的推理过程是一个**多跳(multi-hop)路径**:
$$\text{L1 Pattern} \xrightarrow{\text{抽象}} \text{L2 Primitive} \xrightarrow{\text{语义绑定}} \text{L3 Protocol} \xrightarrow{\text{约束推理}} \text{Exploit}$$
这种分层结构解决了纯 LLM prompt 的两个问题:
1. **幻觉(Hallucination)**:LLM 在缺乏结构化知识时可能生成看似合理但实际不可行的攻击代码。HKG 提供了 grounded knowledge,将推理锚定在真实模式上。
2. **组合爆炸**:DeFi 的攻击向量组合空间巨大。HKG 通过分层抽象将组合空间从"所有可能的代码"缩小到"与当前协议语义相关的攻击原语"。
> **Annotation: 多跳推理(Multi-hop Reasoning)**
>
> 一种需要跨越多个知识节点进行推断的推理方式。例如:从"合约A的 fallback 函数调用了外部合约"(L1)→ 跳转到"这是重入攻击的典型模式"(L2)→ 再跳转到"该协议是 AMM,闪电贷可提供无限流动性来放大攻击"(L3)→ 最终合成"利用闪电贷放大重入攻击规模"的 exploit。每一跳都需要不同层级的知识。
---
## 四、两阶段验证框架
生成 exploit 只是第一步。EvoPoC 的核心创新在于**验证**——确保生成的 PoC 不仅是"能运行的代码",而是"在真实环境中能获利的攻击"。
验证框架分为两个阶段:
### 阶段一:逻辑可达性验证(SMT Solving)
$$\exists \pi : S_0 \xrightarrow{t_1} S_1 \xrightarrow{t_2} \cdots \xrightarrow{t_n} S_n \text{ s.t. } \phi(S_n) = \text{true}$$
其中:
- $\pi$ 是攻击路径(交易序列)
- $S_0$ 是初始区块链状态
- $t_i$ 是第 $i$ 笔交易
- $S_n$ 是最终状态
- $\phi$ 是攻击成功的判定条件(如"攻击者余额增加")
> **Annotation: SMT 求解(Satisfiability Modulo Theories)**
>
> SMT 求解器是一种自动化逻辑推理工具,用于判断一组数学/逻辑约束是否可满足。EvoPoC 将智能合约的执行路径编码为约束系统:变量代表合约状态(余额、权限标志等),约束代表代码逻辑(if 语句、循环、函数调用)。求解器回答:"是否存在一组输入,使得攻击条件被满足?" 如果返回 UNSAT(不可满足),说明攻击路径在逻辑上被合约逻辑阻断。
SMT 阶段回答的问题是:**"从理论上,这个攻击是否可行?"**
### 阶段二:经济可行性验证(Asset-level Simulation)
$$\text{Profit} = \underbrace{\text{Assets}_{\text{final}}}_{\text{攻击后资产}} - \underbrace{\text{Assets}_{\text{initial}}}_{\text{攻击前资产}} - \underbrace{\text{Cost}_{\text{gas}}}_{\text{Gas成本}} - \underbrace{\text{Cost}_{\text{flash}}}_{\text{闪电贷利息}}$$
阶段二在虚拟区块链环境中**模拟完整交易执行**,跟踪:
- 每个地址的代币余额变化
- 流动性池的状态转换
- 预言机价格更新
- Gas 费用消耗
- 闪电贷还款约束
只有当 $\text{Profit} > 0$ 时,PoC 才被视为"经济可行"。
```
┌────────────────────────────────────────────────────────────┐
│ 两阶段验证决策流程 │
├────────────────────────────────────────────────────────────┤
│ │
│ 生成候选 PoC │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ 阶段1: SMT求解 │ 检查逻辑可达性 │
│ │ • 编码合约状态 │ │
│ │ • 编码攻击路径 │ │
│ │ • 求解 SAT/UNSAT │ │
│ └────────┬────────┘ │
│ │ │
│ UNSAT ▼ SAT │
│ ┌────────┴────────┐ │
│ │ 丢弃 (逻辑不可达) │ 通过 (逻辑可达) │
│ └─────────────────┘ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ 阶段2: 资产模拟 │ 检查经济可行性 │
│ │ • 模拟状态转换 │ │
│ │ • 计算利润/亏损 │ │
│ │ • 检查约束满足 │ │
│ └────────┬────────┘ │
│ │ │
│ 亏损 ▼ 盈利 │
│ ┌───────────────┴───────────────┐ │
│ │ 丢弃 (经济不可行) │ 通过 (经济可行) │
│ └─────────────────┘ │ │
│ ▼ │
│ ✅ 有效 PoC │
│ │
└────────────────────────────────────────────────────────────┘
```
两阶段验证的关键价值在于**分层过滤**。SMT 阶段快速排除逻辑上不可行的方案(低成本),资产模拟阶段精确验证经济可行性(高成本但只在通过 SMT 的候选上运行)。
---
## 五、实验数据密度分析
EvoPoC 的评估设计覆盖了三个维度:**历史攻击重现**、**审计项目检测**、**0-day 发现**。
### 5.1 历史攻击重现(88个真实DeFi攻击)
| 指标 | 数值 | 含义 |
|:-----|:----:|:-----|
| 重现成功 | **85 / 88** | 96.6% exploit success rate |
| 恢复资产价值 | **$116.2M** | 模拟攻击可恢复的总价值 |
96.6% 的 ESR 意味着什么?在几乎所有已知攻击类型上,EvoPoC 都能自动合成有效的利用代码。失败的3个案例可能涉及需要链下协调或社会工程的复杂攻击。
### 5.2 审计项目检测(72个项目,2,573合约)
| 指标 | 数值 |
|:-----|:----:|
| 检测 Recall | **98%** |
| 检测 F1-Score | **0.90** |
| 测试合约数 | 2,573 |
| 测试项目数 | 72 |
98% recall 表示:在所有真实存在的漏洞中,EvoPoC 能找到 98%。剩下的 2% 可能是需要特殊上下文或新颖攻击模式的漏洞。
### 5.3 与 SOTA 对比
| 对比维度 | EvoPoC | SOTA 模糊器 (Verite, ItyFuzz) | LLM生成器 (A1) |
|:---------|:------:|:-----------------------------:|:--------------:|
| ESR | **96.6%** | ~19% | ~48% |
| ESR 倍数 | 基准 | **1/5×** | **1/2×** |
| 可恢复价值倍数 | 基准 | **1/300×** | **1/8.5×** |
数据揭示了一个重要模式:传统模糊器在"发现异常"上表现尚可,但在"将异常转化为可利用攻击"上极其薄弱(ESR 仅19%)。LLM 生成器有所改进(48%),但仍远不及 EvoPoC 的结构化推理方法(96.6%)。
300× 的可恢复价值差距尤其值得关注:模糊器生成的 PoC 即使"成功",通常也只能提取少量资产;EvoPoC 通过理解协议语义,能构造出最大化利润的攻击路径。
### 5.4 0-day 发现(Bug Bounty 评估)
| 指标 | 数值 |
|:-----|:----:|
| 确认的 0-day 漏洞 | **16个** |
| 保护资产价值 | **$70.6M** |
| 获得赏金 | **$2,900** |
16个0-day漏洞是在**已被人工审计过的项目**中发现的。这说明 EvoPoC 的覆盖范围和能力超出了当前行业标准的人工审计水平。
但$2,900赏金与$70.6M保护价值之间的比例(约0.004%)也揭示了bug bounty经济的一个结构性问题:防御者支付的赏金远低于攻击者可能窃取的价值。
---
## 六、攻防不对称与局限性
### 6.1 攻防不对称
EvoPoC 的技术是公开的。这意味着:
$$\text{防御者可用} \land \text{攻击者也可用}$$
系统性的影响取决于**采用速度的不对称性**:
| 群体 | 采用动机 | 采用速度 | 影响 |
|:-----|:---------|:---------|:-----|
| 防御者(protocol团队) | 保护资产 | 慢(需集成到开发流程)| 减少漏洞暴露窗口 |
| 攻击者 | 窃取资产 | 快(可直接扫描生态)| 增加攻击频率和成功率 |
| 审计公司 | 提升服务 | 中(需培训和方法论调整)| 提高审计覆盖率 |
在防御者全面采用 AI 辅助审计之前,攻击者可能已建立系统性的扫描能力。这是技术扩散的**经典时间窗口问题**。
### 6.2 技术局限性
论文未深入讨论但值得关注的限制:
1. **历史攻击偏差**:96.6% ESR 是在已知攻击模式上测试的。对新类型攻击(novel attack vectors)的效果未知。
2. **协议复杂度边界**:HKG 的构建依赖于可枚举的攻击原语。对于涉及多个 protocol 交互的复杂攻击(如跨链攻击),HKG 的覆盖可能不足。
3. **经济模型简化**:资产级模拟假设了理性的攻击者和静态的市场环境。在真实的 MEV(最大可提取价值)竞争环境中,多个攻击者同时行动会改变利润计算。
> **Annotation: MEV(Maximal Extractable Value)**
>
> 区块链上通过重新排序、插入或审查交易可获取的最大利润。在 DeFi 中,MEV 通常指套利者、清算者或攻击者通过操控交易顺序获利。EvoPoC 的资产模拟假设攻击者是唯一的参与者,但在真实的 MEV 竞争环境中,多个 bot 同时竞争同一机会,这会改变攻击的实际利润。
---
## 七、结论:从工具到基础设施
EvoPoC 的意义不仅在于它是一个高性能的漏洞利用合成系统。它的深层价值在于**方法论的转变**:
$$\text{Code Generation} \rightarrow \text{Structured Reasoning} \rightarrow \text{Verified Exploit}$$
这一转变将 DeFi 安全审计从"经验驱动的手工劳动"推向"知识驱动的系统方法"。
但技术本身是中性的。96.6% 的 ESR 既可以用来保护 $70.6M 的资产,也可以被用来窃取更多。最终决定安全生态走向的,不是技术能力,而是**采用速度和治理框架**。
---
## 📚 论文详细信息
**基本信息**
| 项目 | 内容 |
|:-----|:-----|
| **标题** | EvoPoC: Automated Exploit Synthesis for DeFi Smart Contracts via Hierarchical Knowledge Graphs |
| **作者** | Ruichao Liang, Jing Chen, Xianglong Li, Huangpeng Gu, Yebo Feng, Yue Xue, Cong Wu, Yang Liu |
| **arXiv ID** | [2605.02868](https://arxiv.org/abs/2605.02868) |
| **发布日期** | 2026年5月4日 |
| **类别** | cs.CR (Computer Security), cs.SE (Software Engineering) |
**核心贡献**
1. 🧠 **分层知识图谱 (HKG)**:将协议语义、攻击原语和具体代码模式组织为三层图结构,作为 LLM 多跳推理的结构化记忆
2. 🔬 **两阶段验证框架**:SMT 求解器验证逻辑可达性 + 资产级状态模拟验证经济可行性
3. 🤖 **知识驱动智能体系统**:端到端漏洞检测与利用合成,不是简单的代码生成
**实验数据集**
| 数据集 | 规模 |
|:-----|:----:|
| 历史DeFi攻击 | 88个 |
| 审计项目 | 72个 |
| 测试合约 | 2,573个 |
**关键性能指标**
| 指标 | 数值 |
|:-----|:----:|
| 检测 Recall | **98%** |
| 检测 F1-Score | **0.90** |
| 利用成功率 (ESR) | **96.6%** |
| 历史攻击重现 | **85 / 88** |
| 恢复资产价值 | **$116.2M** |
| 0-day 漏洞 | **16个** |
| 保护资产价值 | **$70.6M** |
**与SOTA对比**
| 对比对象 | ESR 倍数 | 可恢复价值倍数 |
|:---------|:--------:|:--------------:|
| SOTA 模糊器 (Verite, ItyFuzz) | **5×** | **300×** |
| LLM生成器 (A1) | **2×** | **8.5×** |
**概念注释索引**
| 概念 | 说明 |
|:-----|:-----|
| 模糊测试 (Fuzzing) | 自动化测试技术,随机输入发现异常 |
| 多跳推理 (Multi-hop Reasoning) | 跨越多个知识节点的推断过程 |
| SMT 求解 | 自动化逻辑推理工具,检查约束可满足性 |
| MEV | 最大可提取价值,区块链交易排序竞争 |
| PoC | 概念验证,证明漏洞可被利用的代码 |
| ESR | Exploit Success Rate,漏洞利用成功率 |
| 0-day | 未公开披露的漏洞 |
| HKG | 分层知识图谱,EvoPoC核心数据结构 |
登录后可参与表态
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!
推荐
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
领取 2000万 Tokens
通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力