AI 智能合约安全分析与 PoC 生成框架
Aether 是一个基于 Python 的框架,用于分析 Solidity 智能合约、生成漏洞发现、生成基于 Foundry 的概念验证(PoC)测试,并在主网分叉上验证漏洞利用。它将 Solidity AST 解析、污点分析、控制流图分析、跨合约分析、Halmos 符号执行、180+ 基于模式的静态检测器、带有共享 SAGE 机构记忆的协作式多智能体 LLM 流水线(GPT/Gemini/Claude)、14 种协议原型、75+ 漏洞利用知识库、ML 校准检测、代币特性检测、不变量提取、相关合约上下文解析以及高级上下文感知过滤整合到一个持久化的全屏 TUI 中。
协作式智能体流水线 — 深度分析流水线从 5 个独立轮次转变为 5 个协作智能体,通过 SAGE 机构记忆共享结构化知识:
docker compose up -d 启动。SAGE 机构记忆 — Aether 现在从每次审计中学习,随时间推移减少误报并提升发现质量:
SageFeedbackManager.sync_detector_accuracy() 识别表现优异/欠佳的检测器,并存储“该做/不该做”的经验反思docker compose up -d 启动 SAGE;通过 ~/.aether/config.yaml 中的 sage_enabled/sage_url 配置贡献者: 感谢 @sashavdv 修复了硬编码路径变量(PR #1),以及 @pro258b 指出了缺失的 validate_anthropic_key() 方法(PR #2)。
SAGE 是一个由 BFT 共识驱动的持久化机构记忆系统。完整文档请参阅 SAGE 项目。```bash
pip install sage-agent-sdk
docker compose up -d
python aether.py
python -c "from core.sage_seeder import SageSeeder; SageSeeder.generate_seed_fixtures()"
### SAGE 如何改进审计```
Audit 1 → Findings + FPs → Record outcomes in SAGE
↓
Audit 2 → SAGE recalls FP patterns → Fewer false positives
↓
Audit 3 → Richer institutional context → Better severity calibration
↓
Audit N → Institutional expert-level knowledge → Bug-bounty-quality findings
PoC 自动执行 — 生成的 Foundry PoC 现在可自动编译并执行:
forge test --json 集成:编译后立即运行 PoCPoCTestResult dataclass 解析 JSON 结果,实现结构化的通过/失败/错误报告POC_TESTING 阶段,用于在 TUI 中实时跟踪进度Halmos 符号执行 — 通过符号执行进行形式化验证:
HalmosRunner 用于针对生成的属性执行 Halmos 符号测试HalmosPropertyGenerator 用于根据提取的不变量自动生成验证属性HalmosSymbolicNode 流水线节点集成于验证阶段 1.95enable_symbolic_verification、halmos_timeout控制流图分析 — 编译器级别的控制流理解:
solidity_ast.py 中的 BasicBlock、CFGEdge、ControlFlowGraph dataclassbuild_cfg()、get_dominators()、get_loop_headers()、format_cfg_for_llm() 用于结构分析parse_assembly_block() 解析汇编块,以支持内联汇编ML 反馈循环 — 基于历史结果的校准:
AccuracyTracker.record_finding_outcome() 用于跟踪提交结果和赏金收入get_detector_accuracy() 和 get_detector_weights() 用于各检测器的性能统计DetectorStats dataclass 跟踪真/假阳性及历史准确率EnhancedVulnerabilityDetector 根据检测器历史记录调整置信度权重关联合约上下文 — LLM 分析现在可以看到完整的依赖源代码:
RelatedContractResolver 自动发现父合约、接口、库和依赖合约技术债务清理 — 删除了 8,500 行死代码:
ai_ensemble.py、audit_engine.py、fork_verifier.pyslither_project_cacheSolidity AST 解析 — Aether v4.0 通过 py-solc-x 增加基于编译器的代码分析,超越了仅依赖正则表达式的静态分析:
solc --ast-json 集成,实现正确的继承解析、函数可见性、带槽位号的存储布局,以及每个函数的状态变量读/写跟踪污点分析引擎 — 跟踪合约中用户可控的输入,识别危险的数据流:
跨合约分析(Pass 3.5) — 针对多合约漏洞的新型深度分析 Pass:
代币特性数据库 — 12 类会导致真实漏洞利用的非标准 ERC-20 行为:
| 类别 | 严重程度 | 示例代币 |
|---|---|---|
| 转账扣费 | 高危 | USDT, STA, PAXG |
| 弹性供应代币 | 高危 | stETH, AMPL, OHM |
| ERC-777 回调 | 高危 | imBTC |
| 可闪电铸造 | 高危 | DAI |
| 非标准返回值 | 中危 | Old USDT |
| 黑名单代币 | 中危 | USDC, USDT |
| 可暂停代币 | 中危 | USDC |
| 低精度代币 | 中危 | USDC (6), WBTC (8) |
| 转账钩子 | 中危 | LINK (ERC-677) |
| 授权竞态 | 低危 | 多种 |
| 多入口点 | 低危 | TUSD |
| 可升级代币 | 低危 | USDC v2 |
已集成到静态检测流水线和原型检查清单中。
增强精度引擎 — 高级舍入和精度漏洞检测:
可运行 PoC 生成 — 生成的 Foundry 测试现在可真正编译并运行:
LLM 流水线改进:
深度分析引擎 — Aether v3.5 从根本上改变了工具发现漏洞的方式,从一次性的“找 bug” LLM 调用转变为结构化的 6-Pass 流水线,复刻了专业审计师的代码审查方式:先理解,再系统性地攻击。
Aether 不再将整个合约连同单个提示发送给 LLM,而是运行六个顺序分析 Pass,并累积上下文:
| Pass | 用途 | 模型级别 |
|---|---|---|
| Pass 1 | 协议理解 — 协议是什么、其不变量、价值流动、信任假设 | 廉价(缓存) |
| Pass 2 | 攻击面测绘 — 每个入口点、状态读/写、重入窗口 | 廉价(缓存) |
| Pass 3 | 不变量违反分析 — 系统性地检查每个不变量与每条代码路径 | 强 |
| Pass 4 | 跨函数交互 — 状态依赖分析、时间依赖、闪电贷序列 | 强 |
| Pass 5 | 对抗建模 — 明确的攻击者视角,包括闪电贷、MEV、多账户 | 强 |
| Pass 6 | 边界与边缘情况 — 首次/最后一次操作、零值、最大值、自引用操作 | 中等 |
Pass 1-2 按合约内容哈希缓存,因此重新审计会跳过理解阶段。每个后续 Pass 都会接收之前的所有上下文,构建全面的攻击模型。通过 AETHER_DEEP_ANALYSIS=1 功能标志控制(默认开启);失败时回退到一次性分析。
在分析 bug 之前,Aether 会检测合约实现了哪种类型的协议,并加载特定于原型的漏洞检查清单:
| 原型 | 示例检查项 |
|---|---|
| ERC-4626 金库 | 首个存款人通胀、舍入方向、通过捐赠操纵份额价格 |
| 借贷池 | 预言机价格操纵、清算阈值操纵、坏账级联、利率操纵 |
| DEX/AMM | 首个 LP 操纵、三明治攻击、基于储备金的价格预言机 |
| 跨链桥 | 跨链重放、验证者被攻破、代币映射不匹配、提款证明伪造 |
| 质押 | 奖励计算操纵、奖励率溢出、解除质押重入 |
| 治理 | 闪电贷治理攻击、时间锁绕过、法定人数操纵 |
| 预言机 | 陈旧价格数据、价格偏差、L2 排序器停机 |
共 10 种原型,每种包含 3-7 个来自真实漏洞利用的特定检查项。
一个结构化的数据库,包含 50+ 种分类的真实漏洞利用模式,取代了之前静态的 10 模式列表:
| 类别 | 模式数 | 示例 |
|---|---|---|
| 通胀/份额攻击 | 6 | ERC-4626 首个存款人、LP 代币通胀、基于捐赠的操纵 |
| 重入 | 7 | 经典、只读、跨函数、跨合约、ERC-777/1155 钩子、闪电贷回调 |
| 预言机 | 5 | 现货价格操纵、TWAP 操纵、数据陈旧、精度不匹配、L2 排序器 |
| 治理 | 4 | 闪电贷投票(Beanstalk)、时间锁绕过、法定人数操纵 |
| 跨链桥 | 5 | 消息重放(Nomad)、验证者被攻破(Ronin)、代币映射(Wormhole) |
| 精度/舍入 | 4 | 舍入方向、未检查溢出、转账扣费、弹性代币漂移 |
| 访问控制 | 5 | 未初始化代理、存储冲突、选择器冲突、delegatecall 注入 |
| 经济/DeFi | 8 | 三明治攻击、JIT 流动性、坏账级联、returndata 炸弹、签名重放 |
| 逻辑 | 6 | 差一错误、缺少截止时间/滑点、未检查返回值、自转账记账 |
每种模式包括代码特征、缺失的保护措施、逐步漏洞利用机制,以及真实世界先例(含美元金额)。模式会根据检测到的原型和智能体关注领域进行过滤。