l33tdawg/aether
GitHub: l33tdawg/aether
一个基于 Python 的智能合约安全分析框架,利用 AST 解析、污点分析与多智能体 LLM 流水线实现高效、低误报的漏洞检测与 PoC 生成。
Stars: 43 | Forks: 8
# Aether v6.0 — 智能合约安全分析框架
**版本 6.0** | [v6.0 新特性](#whats-new-in-v60) | [更新日志](#changelog)
Aether 是一个基于 Python 的框架,用于分析 Solidity 智能合约,生成漏洞发现结果,基于 Foundry 生成概念验证(PoC)测试,并在主网分叉上验证漏洞。它结合了 Solidity AST 解析、污点分析、控制流图分析、跨合约分析、Halmos 符号执行、180+ 种基于模式的静态检测器、一个 **协作式多智能体 LLM 流水线**(GPT/Gemini/Claude)与共享的 [SAGE](https://github.com/l33tdawg/sage) 机构记忆、14 种协议原型、75+ 种漏洞知识库、ML 校准检测、代币异常检测、不变量提取、相关合约上下文解析以及先进的上下文感知过滤,提供统一的持久全屏 TUI。
## v6.0 新特性
**协作式智能体流水线** — 深度分析流水线从 5 个独立阶段转变为 5 个协作智能体,通过 SAGE 机构记忆共享结构化知识:
- **共享会话内存** — 每个阶段将发现、忽略和已验证的保护措施存储在每次审计的 SAGE 会话中。后续阶段接收“前期阶段情报”,而非扁平化文本摘要。
- **忽略作为一等记录** — 当第 3 阶段忽略某个关注点(例如“reentrancy 被 nonReentrant 修饰符保护”)时,第 5 阶段不会再次标记。这直接消除了重复发现的首要来源。
- **挑战机制** — 后续阶段可以覆盖之前的忽略,但必须提供**新证据**。“第 3 阶段没有看到通过另一个函数的回调路径”是有效的,“我不同意”则不是。
- **跨阶段确认** — 当多个阶段独立确认一个发现时,置信度提升 15%。跨阶段确认的结果在报告中具有优先级。
- **SAGE 必需** — 机构记忆现在是必需的,而非可选项。没有 SAGE = 无法审计。请运行 `docker compose up -d` 启动。
## v5.0 新特性
**SAGE 机构记忆** — Aether 现在从每次审计中学习,随时间推移减少误报并提高发现质量:
- **预训练知识库** — 包含 170 个机构记忆:75 种漏洞模式、63 种协议原型检查表、12 种代币异常类别、20 个精选历史漏洞(DAO、Wormhole、Euler、Ronin、Curve 等)
- **流水线集成** — SAGE 在深度分析阶段 3 和 5 中回忆历史漏洞模式与攻击模式;在流水线结束后存储审计学习结果以备后续回忆
- **反馈闭环** — 已确认发现被存储为高置信度事实;被拒绝的发现(误报)被存储,以便未来审计避免。AccuracyTracker 结果自动反馈到 SAGE
- **验证流水线** — 新增阶段 -1:SAGE 已知误报检查,在任何其他验证运行之前过滤匹配先前拒绝模式的发现
- **检测器准确性同步** — `SageFeedbackManager.sync_detector_accuracy()` 识别高/低性能检测器并存储“做/不做”反思
- **启动时自动预训练** — 首次启动且 SAGE Docker 运行时自动预训练知识库。版本感知:如果已经预训练则跳过
- **TUI 集成** — SAGE 开关状态及内存计数显示在 CostBar 中
- **Docker 部署** — `docker compose up -d` 启动 SAGE;配置通过 `~/.aether/config.yaml` 中的 `sage_enabled`/`sage_url` 设置
- **优雅降级** — SAGE 不可用不会中断任何审计功能
**贡献者:** 感谢 [@sashavdv](https://github.com/sashavdv) 修复硬编码路径变量 ([PR #1](../../pull/1)),感谢 [@pro258b](https://github.com/pro258b) 识别缺少 `validate_anthropic_key()` 方法 ([PR #2](../../pull/2))。
### SAGE 快速入门
SAGE 是一个由 BFT 共识支持的持久机构记忆系统。完整文档请参见 [SAGE 项目](https://github.com/l33tdawg/sage)。
```
# 安装 SAGE Python SDK
pip install sage-agent-sdk
# 启动 SAGE(需要 Docker)
docker compose up -d
# 运行 Aether — SAGE 首次启动时自动播种
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
```
## v4.7 新特性
**PoC 自动执行** — 生成的 Foundry PoC 现在会自动编译并执行:
- `forge test --json` 集成,在编译后立即运行 PoC
- 使用 `PoCTestResult` 数据类进行 JSON 结果解析,实现结构化通过/失败/错误报告
- 支持分叉模式,用于在实时状态上验证主网漏洞
- JobManager 中新增 `POC_TESTING` 阶段,用于在 TUI 中实时跟踪进度
**Halmos 符号执行** — 形式化验证通过符号执行:
- `HalmosRunner` 用于对生成的属性执行 Halmos 符号测试
- `HalmosPropertyGenerator` 用于从提取的不变量自动生成验证属性
- `HalmosSymbolicNode` 流水线节点集成到验证阶段 1.95
- 配置选项:`enable_symbolic_verification`、`halmos_timeout`
- 如果未安装 Halmos,则优雅降级——跳过符号验证而不会报错
**控制流图分析** — 编译器级别的控制流理解:
- `BasicBlock`、`CFGEdge`、`ControlFlowGraph` 数据类定义在 `solidity_ast.py`
- `build_cfg()`、`get_dominators()`、`get_loop_headers()`、`format_cfg_for_llm()` 用于结构分析
- 通过 `parse_assembly_block()` 解析汇编块以支持内联汇编
- 分支感知污点传播在污点分析器中实现,用于路径敏感分析
- CFG 上下文与污点数据一同注入到深度分析阶段 2
**ML 反馈闭环** — 基于历史结果进行校准:
- `AccuracyTracker.record_finding_outcome()` 跟踪提交结果与漏洞赏金收入
- `get_detector_accuracy()` 与 `get_detector_weights()` 提供每个检测器的性能统计
- `DetectorStats` 数据类跟踪真/假阳性及历史准确性
- 根据检测器记录调整 `EnhancedVulnerabilityDetector` 的置信度权重
- 从历史数据注入严重性校准到深度分析阶段 5
**相关合约上下文** — LLM 分析现在能看到完整的依赖源代码:
- `RelatedContractResolver` 自动发现父合约、接口、库和依赖合约
- 项目模式使用跨合约关系分析;单文件模式解析导入语句
- 每个阶段设有每阶段预算:Gemini Flash 阶段 200K 字符,Claude 阶段 100K,GPT 阶段 50K
- 标准库(@openzeppelin、solmate、solady)被摘要为仅接口以节省预算
- 单文件审计自动发现同级 .sol 文件以提供上下文
**技术债务清理** — 移除 8,500 行死代码:
- 删除:`ai_ensemble.py`、`audit_engine.py`、`fork_verifier.py`
- 从 CLI、审计运行器、TUI 界面和报告生成器中移除所有 ai_ensemble 引用
- 从数据库管理器中移除 `slither_project_cache`
- 从增强审计引擎中移除形式化验证存根
## v4.0 新特性
**Solidity AST 解析** — Aether v4.0 通过 `py-solc-x` 添加编译器支持代码分析,摆脱纯正则表达式分析:
- 完整的 `solc --ast-json` 集成,用于正确解析继承、函数可见性、存储布局(含槽号)以及每个函数的状态变量读/写跟踪
- 编译失败时提供优雅的降级(缺失导入或编译器版本错误)
- AST 结构摘要自动输入到深度分析 LLM 流水线,以更好地理解协议
**污点分析引擎** — 跟踪用户可控输入以识别危险数据流:
- 8 种污点源类型:函数参数、msg.sender、msg.value、calldata、外部调用返回值、block.timestamp、block.number、tx.origin
- 12 种危险汇类型:delegatecall、selfdestruct、外部调用、ETH 转账、存储写入、数组索引、除零等
- 净化器检测:识别范围检查、访问控制修饰符、条件 revert、Math.min/max 钳制、SafeCast
- 跨合约污点跟踪支持多文件
- 集成到验证流水线(阶段 1.85),用于污点感知发现确认/反驳
**跨合约分析(Pass 3.5)** 新的深度分析阶段,针对多合约漏洞:
- 跨合约关系分析器:检测继承、接口调用、delegatecall、staticcall、类型化状态变量关系
- 基于并查集的合约分组与信任边界检测
- 专用的 LLM 阶段分析:信任边界违规、跨合约状态一致性、跨合约 reentrancy、接口合规性、升级交互、权限提升
- 跨合约上下文也传入阶段 4 以实现跨函数感知
**代币异常数据库** — 12 类非标准 ERC-20 行为,这些行为曾导致真实漏洞:
| 类别 | 严重性 | 示例代币 |
|------|--------|----------|
| 费用转移 | 高 | USDT、STA、PAXG |
| 重新平衡代币 | 高 | stETH、AMPL、OHM |
| ERC-777 回调 | 高 | imBTC |
| 可闪电铸造 | 高 | DAI |
| 非标准返回值 | 中 | 旧版 USDT |
| 列入黑名单代币 | 中 | USDC、USDT |
| 可暂停代币 | 中 | USDC |
| 低小数位代币 | 中 | USDC(6)、WBTC(8) |
| 转账钩子 | 中 | LINK(ERC-677) |
| 批准竞争 | 低 | 多种 |
| 多入口点 | 低 | TUSD |
| 可升级代币 | 低 | USDC v2 |
集成到静态检测流水线和原型检查表中。
**增强精度引擎** — 高级舍入与精度漏洞检测:
- **份额通胀/首个存款人攻击** 检测 ERC-4626 金库、借贷池、质押
- **舍入方向分析** — 存款应向下舍入,提现应向上舍入
- **除法截断跟踪** — 捕获随后用于乘法的截断率变量
- **尘埃利用检测** — 舍入为零允许免费操作
- **累加器溢出** — 奖励累加器溢出风险评估
**可运行的 PoC 生成** — 生成的 Foundry 测试现在真正编译并运行:
- 模拟合约库:MockERC20、MockOracle、MockWETH、MockFlashLoanProvider
- 智能 `setUp()` 生成器:提取构造函数参数、部署模拟合约、处理可升级合约、铸造代币并设置授权
- 最大编译尝试次数从 3 增至 5
- LLM 提示包含模拟 API 文档和推荐的 `setUp`
**LLM 流水线改进**:
- **少量样本示例**在阶段 3、4、5 中使用——来自漏洞知识库的真实漏洞与误报示例
- **严重性校准** — 与财务影响挂钩的具体阈值(关键 >$1M,高危 >$100K,中危 >$10K)
- **链式思维强制** — 强制在 JSON 输出前进行 5 步推理
- **多提供者轮换** — Gemini Flash 用于低成本阶段,Anthropic Claude 用于推理,OpenAI GPT 用于多样性
- **AI 集成体退役** — 6 个智能体的集成(6 倍成本、更差的上下文)被提供者轮换的结构化流水线取代
## v3.5 新特性
**深度分析引擎** — Aether v3.5 从根本上改变了发现漏洞的方式,从一次性“查找漏洞”的 LLM 调用转变为结构化 6 阶段流水线,模拟专业审计员的代码审查方式:先理解,再系统地攻击。
### 深度分析引擎(6 阶段 LLM 流水线)
不再将整个合约一次性发送给 LLM,而是使用累积上下文运行六个顺序分析阶段:
| 阶段 | 目的 | 模型层级 |
|------|------|----------|
| **阶段 1** | 协议理解——该协议是什么、不变量、价值流、信任假设 | 低成本(缓存) |
| **阶段 2** | 攻击面映射——每个入口点、状态读/写、重入窗口 | 低成本(缓存) |
| **阶段 3** | 不变量违规分析——系统性地检查每个不变量与每条代码路径 | 强模型 |
| **阶段 4** | 跨函数交互——状态依赖分析、时间依赖、闪电贷序列 | 强模型 |
| **阶段 5** | 对抗建模——从攻击者视角显式建模,包含闪电贷、多账户 | 强模型 |
| **阶段 6** | 边界与边缘情况——首/末操作、零值、最大值、自引用操作 | 中等成本 |
阶段 1–2 按合约内容哈希缓存,因此重新审计会跳过理解阶段。每个后续阶段接收所有前期上下文,构建全面的攻击模型。特性通过 `AETHER_DEEP_ANALYSIS=1` 启用(默认开启);失败时回退到一次性分析。
### 协议原型系统
在分析漏洞之前,Aether 会检测合约实现了哪种*协议类型*并加载特定原型的漏洞检查列表:
| 原型 | 示例检查项 |
|------|------------|
| **ERC-4626 金库** | 首个存款人通胀、舍入方向、通过捐赠操纵份额价格 |
| **借贷池** | 预言机价格操纵、清算阈值操纵、坏账级联、利率操纵 |
| **DEX/AMM** | 首个 LP 操纵、夹击攻击、通过储备金的价格预言机 |
| **桥接** | 跨链重放、验证者妥协、令牌映射不匹配、提款证明伪造 |
| **质押** | 奖励计算操纵、奖励率溢出、取消质押重入 |
| **治理** | 闪电贷治理攻击、时限绕过、投票权操纵 |
| **预言机** | 陈旧价格数据、价格偏离、L2 排序器停机 |
共 10 种原型,每种包含 3–7 个从真实世界漏洞中提取的具体检查项。
### 漏洞知识库(50+ 模式)
用结构化的 50+ 真实世界漏洞模式取代之前的静态 10 模式列表:
| 类别 | 模式 | 示例 |
|------|------|------|
| 通胀/份额攻击 | 6 | ERC-4626 首个存款人、LP 代币通胀、基于捐赠的操纵 |
| 重入 | 7 | 经典、只读、跨函数、跨合约、ERC-777/1155 钩子、闪电贷回调 |
| 预言机 | 5 | 现货价格操纵、TWAP 操纵、陈旧性、精度不匹配、L2 排序器 |
| 治理 | 4 | 闪电贷投票(Beanstalk)、时限绕过、投票权操纵 |
| 桥接 | 5 | 消息重放(Nomad)、验证者妥协(Ronin)、令牌映射(Wormhole) |
| 精度/舍入 | 4 | 舍入方向、未经检查的溢出、费用转移、代币重基准漂移 |
| 访问控制 | 5 | 未初始化代理、存储冲突、选择器冲突、delegatecall 注入 |
| 经济/DeFi | 8 | 夹击攻击、即时流动性、坏账级联、returndata 炸弹、签名重放 |
| 逻辑 | 6 | 索引越界、遗漏截止/滑点、未检查的返回值、自我转账记账 |
每个模式包含代码指标、缺失防护、逐步利用机制以及真实案例(附带金额)。模式根据检测到的原型和智能体关注区域进行过滤。
### 不变量引擎
从三个来源自动提取协议不变量:
1. **NatSpec** `@invariant` 标签(注释中)
2. **LLM 分析**(阶段 1)发现的不变量
3. **模式检测** 常见不变量(余额守恒、AMM 恒定乘积、抵押率等)
生成 Foundry `invariant_*()` 测试套件,作为形式验证的轻量证明——不变量测试失败即证明漏洞存在。
### 流水线修复
- **上下文感知严重性校准** — 不再 blanket-downgrade `division_by_zero`、`integer_underflow` 等。现在会检查该发现是否在 `unchecked{}` 块中、是否靠近价值转移、价格计算或预言机上下文,再决定是否降级
- **验证门修复** — `"pending"` 发现现在会通过 LLM 分析(之前仅 `"validated"` 通过,导致许多真实发现被静默丢弃)
- **专家感知置信度惩罚** — 来自其专业领域的单智能体发现(如 AnthropicReasoningSpecialist 发现复杂逻辑漏洞)仅受 -0.05 惩罚,而非 -0.15
- **行桶去重修复** — 移除任意line // 10) * 10` 分桶,修复导致相距 2 行的发现被分到不同组的边界问题
- **DeFi 检测器集成** — `DeFiVulnerabilityDetector`(两阶段存在/缺失语义分析)现在运行在主增强审计引擎中,而不仅是在基于流的流水线中
## v3.0 新特性
**全屏内联文本 TUI** — Aether v3.0 是一个持久全屏应用程序,绝不回到原始终端。审计、PoC 生成、报告生成、GitHub 范围选择、设置配置等所有操作均在 TUI 内完成:
- **零 `app.suspend()` 调用** — TUI 永不消失,无突兀的终端切换
- **后台作业处理一切** — 本地审计、GitHub 审计、PoC 生成、报告生成均以守护线程运行,实时流式输出
- **实时作业表** — htop 风格的视图展示所有运行/已完成作业,包含实时状态、阶段进度、发现数、成本与耗时
- **每作业深入查看** — 按 `Enter` 可查看任意作业的实时滚动输出、阶段进度条和元数据
- **并发操作** — 可同时启动多个审计、PoC 生成和报告;全部可见且可追踪
- **内联合约选择器对话框** — 可过滤、近乎全屏的多选,替代旧的 curses 选择器。支持空格切换、`a`/`n` 全选/全不选、输入过滤、带颜色标记已审计合约
- **内联 GitHub 审计流程** — 克隆仓库、发现框架、选择合约并启动审计,全程不离开 TUI。范围管理(继续、重新审计、新建范围)通过原生 Textual 对话框完成
- **内联设置** — API 密钥配置和模型选择通过 TextInputDialog 和 SelectDialog 完成,无需外部设置向导
- **会话成本条** — 实时按提供者(OpenAI、Gemini、Anthropic)跟踪 LLM 成本
- **键盘驱动** — `n` 新建审计、`r` 恢复、`h` 历史、`p` PoC、`o` 报告、`f` 获取、`s` 设置、`q` 退出
**四种后台作业类型**:所有重型操作均通过 `AuditRunner` 以守护线程运行,输出由 `ThreadDemuxWriter` 捕获并在 `JobDetailScreen` 显示:
| 作业类型 | 描述 |
|----------|------|
| `local` | 单合约或多合约并行审计 |
| `github` | GitHub 仓库审计(带预选范围) |
| `poc` | Foundry 证明生成 |
| `report` | 审计报告生成(Markdown/JSON/HTML) |
**三提供者 LLM 支持**:OpenAI(GPT-5/5.3)、Google Gemini(2.5/3.0)、Anthropic Claude(Sonnet 4.5/Opus 4.6)
**增强型 PoC 生成**:基于 AST 的合约分析、迭代编译修复、生产就绪 LLM 提示生成适用于漏洞赏金提交的利用代码。
**高级误报过滤**:将误报率从 66% 降至约 20–25%,准确率从 33% 提升至 75–80%:
- **脚本检测** — 部署脚本(`script/`、`.s.sol`、`forge-std/Script.sol` 或继承 `is Script`)自动标记为部署脚本并从漏洞分析中排除
- **文件上下文标记** — LLM 提示包含 `// FILE: ` 标记,深层分析阶段 1 和 3 接收 `[PRODUCTION]` / `[DEPLOYMENT SCRIPT]` 标签,让模型关注正确代码
- **动态修饰符检测** — `GovernanceDetector` 现在提取合约中自定义的访问控制修饰符(如 `onlyDistributor`、`authorized`),并与硬编码模式合并用于 `has_access_control()` 和 `is_governance_function()`
- **函数作用域去重** — 重复发现按 `(函数名, 漏洞类型)` 合并,替代脆弱的基于行号的邻近合并
- **原子构造器检测** — 识别同一构造器中同时部署(`new`/`Create2`)并初始化(`.initialize()`)的操作,将前端运行风险视为误报
- **治理感知 LLM 验证** — 包含 18 种模式检查列表
- **部署分析** — 验证代码路径是否实际在生产中使用
- **内置保护检查** — Solidity 0.8+ 自动保护、SafeMath
- **准确性跟踪** — 跟踪提交结果与漏洞赏金收入
- **智能缓存** — 2 倍加速重复分析
**漏洞数据库集成**:将 128 条关键/高危发现(来自 77 次审计)的模式迁移至 Solidity/EVM:
- 业务逻辑、状态管理、数据不一致、中心化、循环问题、增强输入验证
## 快速入门
### 1. 安装
```
python setup.py # Interactive installer (recommended)
```
### 2. 启动 Aether
```
python aether.py # Launches the full-screen Textual TUI
```
仅此而已。TUI 通过键盘快捷键和模态对话框引导你完成所有操作。
## 要求
- **Python 3.11+**(已测试 3.12.8)
- **Node.js 22+**(用于 Hardhat/npm 项目)
- **Foundry(forge/anvil)** 在 PATH 中,用于 PoC 生成与验证
- **solc-select** 用于多版本 Solidity 编译器
- **py-solc-x**(可选)用于 Solidity AST 解析;若不可用则回退到正则分析
- **LLM API 密钥**:
- `OPENAI_API_KEY`(用于 GPT 模型)
- `GEMINI_API_KEY`(用于 Gemini 模型)
- `ANTHROPIC_API_KEY`(用于 Claude 模型)
- `ETHERSCAN_API_KEY`(可选,用于获取已验证合约)
## 手动安装
如需手动安装:
```
# Foundry
curl -L https://foundry.paradigm.xyz | bash && foundryup
export PATH="$PATH:$HOME/.foundry/bin"
# solc-select
pip install solc-select
solc-select install 0.4.26 0.8.0 0.8.19 0.8.20 latest
# Python 依赖项
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
```
## 配置
安装向导(`python setup.py`)会处理所有步骤。你也可以在 TUI 内通过 `s`(设置)进行配置:
- **配置 API 密钥** — 依次提示输入 OpenAI、Gemini、Anthropic、Etherscan 密钥,显示当前掩码值
- **配置模型** — 为每个提供者选择可用模型
- **完整向导** — 依次运行 API 密钥配置与模型选择
- **分级设置** — 调整严重性阈值、置信度水平、最大发现数
或直接设置环境变量:
```
export OPENAI_API_KEY=sk-...
export GEMINI_API_KEY=...
export ANTHROPIC_API_KEY=...
```
配置存储在 `~/.aether/config.yaml` 中。
数据库位置:
- 引擎结果:`~/.aether/aetheraudit.db`
- GitHub 审计工作流:`~/.aether/aether_github_audit.db`
## TUI 使用指南
所有交互均通过主屏幕的键盘快捷键完成:
### `n` — 新建审计
多步骤向导,三种源类型:
**本地文件或目录:**
1. 通过 PathDialog 选择路径
2. 若为目录,通过 CheckboxDialog 选择合约
3. 选择功能(增强、LLM 验证、Foundry PoC、增强报告)
4. 设置输出目录
5. 确认并以后台作业启动
**GitHub URL:**
1. 输入仓库 URL
2. Aether 克隆仓库并发现合约(进度内联显示)
3. 若存在已有范围,选择:继续、重新审计或新建范围
4. 通过 ContractSelectorDialog 选择合约(可过滤,空格切换,`a`/`n` 全选/全不选,输入过滤,颜色标记已审计)
5. 审计以后台作业启动——在作业表中可见
**区块浏览器 URL / 地址:**
1. 输入地址或浏览器 URL
2. Aether 获取已验证源代码
3. 继续选择功能与输出
### `r` — 恢复审计
显示所有进行中的 GitHub 审计表格(项目名、范围、进度 N/M 合约、最后更新时间)。选择后验证待处理合约并以后台作业启动。
### `h` — 审计历史
统一视图展示本地与 GitHub 数据库中的所有历史记录。选择任意条目打开子菜单:
- **查看详情** — 范围分解及进度与状态
- **生成 PoC** — 跳转至 PoC 向导并预选项目
- **重新审计** — 通过 ContractSelectorDialog 选择合约,以后台作业启动
### `p` — 生成C
选择项目,配置最大项数、最低严重性、仅共识过滤。PoC 生成以后台作业运行——在作业表中观察进度。
### `o` — 报告
选择项目、范围与格式(Markdown/JSON/HTML/全部)。报告生成以后台作业运行。
### `f` — 获取合约
选择 10+ 条支持链,输入地址或粘贴浏览器 URL,获取已验证源代码并可选择立即审计。
### `s` — 设置
- **运行完整向导** — API 密钥与模型选择,全部内联
- **查看当前配置** — 格式化显示所有设置
- **重新配置 API 密钥** — TextInputDialog 提示并掩码当前值
- **重新配置模型选择** — 每个提供者的 SelectDialog
- **分级设置** — 调整严重性、置信度、最大发现数
- **清除数据** — 一次性清除本地审计数据库、GitHub 审计数据库、分析缓存或全部(需确认)
### `Enter` — 作业详情
在作业表的任意行按 `Enter`,查看:
- 实时滚动日志输出(每秒更新)
- 阶段进度条
- 作业元数据(类型、目标、状态、成本、耗时)
### `q` — 退出
退出 TUI。若有作业正在运行,会提示确认。
## 范围与能力
- **Solidity AST 解析** — 通过 py-solc-x 进行编译器支持代码分析,正确解析继承、函数可见性、存储布局、状态变量读/写跟踪;无可用时回退到正则分析
- **控制流图分析** — `build_cfg()` 构建基本块与支配树和循环头检测;汇编块解析;分支感知污点传播;CFG 上下文注入深度分析阶段 2
- **污点分析引擎** — 跟踪 8 种污点源至 12 种危险汇,配合净化器检测、跨合约跟踪与分支感知 CFG 传播
- **跨合约分析** — 跨合约关系分析器(含信任边界检测)、并查集分组、阶段 3.5(跨合约)专用 LLM 传递、`RelatedContractResolver` 提供依赖上下文
- **深度分析引擎** — 6 阶段 LLM 流水线加阶段 3.5(跨合约):理解 → 攻击面映射 → 不变量检查 → 跨函数分析 → 对抗建模 → 边界与边缘情况;每阶段模型层级选择、缓存、少量样本示例、链式思维强制、阶段 2 注入 CFG 上下文、阶段 5 ML 严重性校准、相关合约上下文每阶段注入
- **协议原型检测** — 自动识别 14 种协议类型(金库、借贷、DEX、桥、质押、治理、预言机、Liquid Staking、Perpetual DEX、CDP Stablecoin、Yield Aggregator 等),每类附带 3–7 条检查项
- **漏洞知识库** — 75+ 分类真实漏洞模式(通胀/份额、重入、预言机、治理、桥接、精度/舍入、访问控制、经济/DeFi、逻辑),含代码指标、缺失防护、逐步利用机制与真实案例(附金额),按原型与关注区域过滤
- **代币异常数据库** — 12 类非标准 ERC-20 行为集成至检测流水线
- **不变量引擎** — 从 NatSpec、LLM 分析与代码模式提取不变量;生成 Foundry `invariant_*()` 测试作为轻量形式验证
- **静态分析** — 180+ 基于模式的检测器(重入、访问控制、算术、预言机操纵、闪电贷、MEV 等)
- **增强精度引擎** — 份额通胀检测、舍入方向分析、除法截断跟踪、尘埃利用检测、累加器溢出评估
- **LLM 分析** — 结构化验证导向分析(OpenAI/Gemini/Claude);多提供者轮换;严重性阈值绑定财务影响(关键 >$1M,高危 >$100K,中危 >$10K)
- **上下文感知过滤** — 严重性校准前检查风险上下文(unchecked 块、价值操作、预言机使用);待处理发现保留供 LLM 验证
- **并行审计** — 多合约并发分析,作业表中实时跟踪
- **GitHub 审计流程** — 克隆仓库、检测框架、发现合约、内联选择范围、持久状态
- **Foundry PoC 生成** — AST 分析、迭代编译反馈(最多 5 次)、模拟合约库、智能 `setUp()` 生成、生产级利用提示、自动执行(`forge test --json`)与分叉模式支持
- **多链合约获取** — 10+ EVM 链 + Solana 支持
- **报告** — Markdown/JSON/HTML 生成
- **LLM 使用跟踪** — 令牌用量、成本统计、所有提供者汇总
- **持久化** — 两个 SQLite 数据库(引擎结果、GitHub 审计工作流)
## 输出目录
- `./output/` — 通用输出根目录
- `./output/reports/` — 生成的报告
- `./output/pocs/` — 生成的 Foundry PoC 套件
- `./output/exploit_tests/` — 漏洞测试结果
## 架构
### 入口点
- `aether.py` — 唯一入口点,启动 Textual TUI
- `cli/interactive_menu.py` — 轻量包装,创建 JobManager + AetherApp
- `cli/tui/app.py` — `AetherApp(App)` — 主 Textual 应用,含按键绑定与 1 秒刷新定时器
### TUI 层(`cli/tui/`)
- **屏幕**:`MainScreen`(作业表 + 成本条)、`JobDetailScreen`(实时日志 + 阶段 + 元数据)、`NewAuditScreen`、`HistoryScreen`、`ResumeScreen`、`PoCScreen`、`ReportsScreen`、`FetchScreen`、`SettingsScreen`
- **组件**:`JobsTable`(DataPolling Table)、`CostBar`(各提供者成本)、`LogViewer`(RichLog 增量刷新)、`PhaseBar`(Unicode 块进度)
- **对话框**:`ConfirmDialog`、`TextInputDialog`、`SelectDialog`、`CheckboxDialog`、`PathDialog`、`ContractSelectorDialog` — 均为 ModalScreen 子类
- **辅助工具**:`GitHubAuditHelper` — 分解的 GitHub 审计操作
- **主题**:`theme.tcss` — cyan 风格 Textual CSS
### 后台执行
- `cli/audit_runner.py` — `AuditRunner` 类,运行审计、PoC、报告与 GitHub 审计的守护线程
- `core/job_manager.py` — `JobManager` 单例:会话作业注册表(QUEUED/RUNNING/COMPLETED/FAILED/CANCELLED)
- `core/audit_progress.py` — `ContractAuditStatus` 含每作业日志缓冲,`ThreadDemuxWriter` 捕获 stdout/stderr
- `core/llm_usage_tracker.py` — 线程安全单例,含 `snapshot()` 用于每作业成本增量
### 核心编排
- `cli/main.py` — `AetherCLI` 类(~2600 行)— 内部审计编排器,被 AuditRunner 调用
- `core/enhanced_audit_engine.py` — 主审计引擎,含深度分析集成
- `core/post_audit_summary.py` — 审计后汇总面板,含各提供者成本分解
### 深度分析层(v4.7)
- `core/deep_analysis_engine.py` — 6 阶段 LLM 流水线加阶段 3.5(跨合约):理解 → 攻击面 → 不变量 → 跨函数 → 对抗 → 边界;模型层级选择、缓存、少量样本示例、链式思维强制、阶段 2 注入 CFG 上下文、阶段 5 ML 严重性校准、相关合约上下文每阶段注入
- `core/protocol_archetypes.py` — 协议原型检测(14 类,含 LIQUID_STAKING、PERPETUAL_DEX、CDP_STABLECOIN、YIELD_AGGREGATOR)
- `core/exploit_knowledge_base.py` — 75+ 分类真实漏洞模式(含 CROSS_CONTRACT、SIGNATURE_AUTH、TOKEN_INTEGRATION、PROXY_UPGRADE、TYPE_SAFETY)
- `core/invariant_engine.py` — 不变量提取(NatSpec + LLM + 模式)与 Foundry 不变量测试生成 + Halmos 属性生成
- `core/solidity_ast.py` — 通过 py-solc-x 的 Solidity AST 解析(含正则);控制流图构建(`build_cfg()`、`get_dominators()`、`get_loop_headers()`)
- `core/taint_analyzer.py` — 数据流/污点分析,含 8 种源、12 种汇、防卫器检测、跨合约跟踪、分支感知 CFG 传播
- `core/cross_contract_analyzer.py` — 跨合约关系分析(含信任边界检测)、并查集分组、`RelatedContractResolver` 提供依赖上下文
- `core/token_quirks.py` — 代币异常数据库(12 类)
- `core/halmos_runner.py` — Halmos 符号执行运行器
- `core/halmos_property_generator.py` — 从不变量自动生成 Halmos 验证属性
- `core/accuracy_tracker.py` — ML 反馈闭环:每检测器准确性跟踪、置信度权重生成
### 检测层
- `core/enhanced_vulnerability_detector.py` — 主检测器(含 60+ 模式)
- `core/business_logic_detector.py`、`core/state_management_detector.py`、`core/data_inconsistency_detector.py`、`core/centralization_detector.py`、`core/looping_detector.py` — Move 启发检测器
- `core/defi_vulnerability_detector.py`、`core/mev_detector.py`、`core/oracle_manipulation_detector.py` — DeFi 专用检测器(DeFi 检测器在 v3.5 集成至增强引擎)
- `core/arithmetic_analyzer.py`、`core/precision_analyzer.py`、`core/gas_analyzer.py`、`core/input_validation_detector.py`、`core/data_decoding_analyzer.py` — 专用分析器(精度分析器增强含份额通胀、舍入方向、除法截断、尘埃利用、累加器溢出检测)
- 代币异常检测集成至静态检测流水线(通过 `core/token_quirks.py`)
### 验证层
- `core/validation_pipeline.py` — 多阶段流水线:内置保护检查 → 治理检测 → 污点感知验证(阶段 1.85)→ Halmos 符号验证(阶段 1.95)→ 部署验证 → 本地验证
- `core/governance_detector.py`、`core/deployment_analyzer.py`、`core/llm_false_positive_filter.py`
- `core/control_flow_guard_detector.py`、`core/inheritance_verifier.py`
- `core/nodes/halmos_node.py` — `HalmosSymbolicNode` 流水线节点
### LLM 与 AI 层
- `core/enhanced_llm_analyzer.py` — 结构化 LLM 分析(OpenAI/Gemini/Claude),含 JSON 输出与多提供者轮换
- `core/enhanced_prompts.py` — 生产提示模板,动态加载知识库中的模式、少量样本示例、严重性校准、链式思维强制
### PoC 生成层
- `core/foundry_poc_generator.py`(~8000 行)— AST 分析、迭代编译反馈(最多 5 次)、模拟合约库(MockERC20、MockOracle、MockWETH、MockFlashLoanProvider)、智能 `setUp()` 生成、生产级利用提示、自动执行(`forge test --json`)与分叉模式支持
- `core/llm_foundry_generator.py` — LLM 基础测试生成(含模拟 API 文档与推荐 `setUp`)
- `core/enhanced_foundry_integration.py` — Foundry 验证与格式化
- `core/poc_templates.py` — 模拟合约模板(MockERC20、MockOracle、MockWETH、MockFlashLoanProvider)
- `core/poc_setup_generator.py` — 智能 `setUp()` 生成:提取构造函数参数、部署模拟合约、处理可升级合约、铸造代币与设置授权
### 持久化层
- `core/database_manager.py` — `DatabaseManager`(本地审计)+ `AetherDatabase`(GitHub 审计)
- `core/analysis_cache.py` — 智能缓存(2 倍加速重复分析)
- `core/accuracy_tracker.py` — ML 反馈闭环:提交结果、漏洞赏金、每检测器准确性统计、置信度权重生成
### 集成
- `core/github_auditor.py` — 克隆仓库、检测框架、发现合约、协调分析
- `core/etherscan_fetcher.py`、`core/basescan_fetcher.py` — 从区块浏览器获取已验证合约
- `core/exploit_tester.py` — 在 Anvil 分叉上验证漏洞
### 流式执行
审计流程定义在 YAML 配置(`configs/`)。增强审计流水线:
`FileReaderNode -> StaticAnalysisNode -> LLMAnalysisNode -> EnhancedExploitabilityNode -> [FixGeneratorNode -> ValidationNode -> HalmosSymbolicNode] -> ReportNode`
## 测试
2059 个测试分布在 76 个测试文件中,运行约 23 秒。
## 故障排查
- **Foundry 未找到** — 确保 `forge`/`anvil` 已安装并在 PATH 中(`foundryup` 并执行 `export PATH="$PATH:$HOME/.foundry/bin"`)
- **solc 未找到** — 安装 `solc-select` 并安装所需版本:`solc-select install 0.8.20 latest`
- **LLM 功能不可用** — 检查 API 密钥是否已设置。部分模型在您的账户/区域可能不可用;系统会自动降级
- **数据库未找到** — 对于 GitHub 报告,请确保已先运行审计工作流
- **Textual 加载失败** — 运行 `pip install textual>=1.0.0`
## 更新日志
### v4.7 — PoC 自动执行、Halmos 符号验证、CFG 分析与 ML 反馈闭环
- **PoC 自动执行** — 生成的 Foundry PoC 自动编译并执行(`forge test --json`),含 `PoCTestResult` 解析与分叉模式支持;`POC_TESTING` 阶段用于 TUI 实时跟踪
- **Halmos 符号执行** — `HalmosRunner`、`HalmosPropertyGenerator` 与 `HalmosSymbolicNode` 流水线节点(验证阶段 1.95),用于不变量形式化验证;未安装 Halmos 时优雅降级
- **控制流图分析** — `BasicBlock`、`CFGEdge`、`ControlFlowGraph`,含 `build_cfg()`、支配树、循环头检测、汇编块解析;CFG 上下文注入深度分析阶段 2;分支感知污点传播
- **ML 反馈闭环** — `AccuracyTracker` 记录提交结果与漏洞赏金;提供 `get_detector_accuracy()` 与 `get_detector_weights()`;置信度权重在 `EnhancedVulnerabilityDetector` 中调整;严重性校准在阶段 5 注入历史数据
- **相关合约上下文** — `RelatedContractResolver` 发现父/接口/库/依赖合约;项目模式使用跨合约关系分析;单文件模式解析导入;每阶段预算(Gemini Flash 200K/Claude 100K/GPT 50K);标准库摘要为接口;单文件审计自动发现同级 .sol
- **技术债务清理** — 移除 8,500 行死代码:删除 `ai_ensemble.py`、`audit_engine.py`、`fork_verifier.py`;移除所有 ai_ensemble 引用;移除 `slither_project_cache`;移除形式化验证存根
- **2059 个测试** 通过(76 个测试文件)
### v4.0 — Solidity AST 解析、污点分析与数据流跟踪
- **Solidity AST 解析器** — 通过 py-solc-x 完整集成 solc,支持继承解析、函数可见性、存储布局(含槽号)、状态变量读/写跟踪;编译失败时正则降级
- **污点分析引擎** — 跟踪 8 种污点源至 12 种危险汇,含净化器检测与跨合约跟踪
- **流水线集成** — AST 数据输入阶段 1,污点数据输入阶段 2,污点感知验证阶段 1.85
- **1839 个测试** 通过(67 个测试文件,约 23 秒)
### v3.8 — 增强检测与 PoC 生成
- **跨合约分析** — 阶段 3.5 新增跨合约关系分析器、信任边界检测、并查集分组
- **代异常数据库** — 12 类非标准 ERC-20 行为(费用转移、重新平衡、ERC-777 回调等)
- **增强精度引擎** — 份额通胀检测、舍入方向分析、除法截断跟踪、尘埃利用、累加器溢出评估
- **可运行的 PoC 生成** — 模拟合约库(ERC20、Oracle、WETH、FlashLoan)、智能 `setUp()`、最大编译尝试 3→5
- **少量样本示例** 在深度分析阶段 3、4、5 使用真实漏洞与误报示例
- **严重性校准** — 阈值明确(关键 >$1M,高危 >$100K,中危 >$10K)
- **链式思维强制** — 强制 5 步推理后再输出 JSON
- **AI 集成体退役** — 以多提供者轮换替代 6 代理集成
- **多提供者轮换** — Gemini Flash(低成本)、Anthropic Claude(推理)、OpenAI GPT(多样性)
- **1682 个测试** 通过
### v3.7 — 扩展原型与漏洞模式
- **4 个新原型** — LIQUID_STAKING、PERPETUAL_DEX、CDP_STABLECOIN、YIELD_AGGREGATOR(总计 14)
- **25 个新漏洞模式** — CROSS_CONTRACT、SIGNATURE_AUTH、TOKEN_INTEGRATION、PROXY_UPGRADE、TYPE_SAFETY(总计 75)
- **改进合约扫描器** — 抽象评分,阈值调整以支持单体仓库
- **1528 个测试** 通过
### v3.5.2 — 误报减少
- **脚本检测在合约发现中** — 排除 `script/`、`.s.sol` 及继承 `is Script` 的文件
- **文件上下文标记** — 深度分析阶段 1 和 3 接收 `[PRODUCTION]` / `[DEPLOYMENT SCRIPT]` 标签
- **动态修饰符检测** — `GovernanceDetector` 提取自定义访问控制修饰符
- **函数作用域去重** — 按 `(函数名, 漏洞类型)` 分组
- **放宽 AI 集成行容差** — ±15 行
- **原子构造器误报模式** — 检测部署与初始化在同一构造器中的情况
- **LLM 验证模式 #18** — 添加“原子部署 + 初始化”至 18 模式误报清单
- **1489 个测试** 通过(56 个测试文件)
### v3.5 — 深度分析引擎
- **6 阶段深度分析流水线** — 替代一次性 LLM 调用;阶段 1–2 缓存加速
- **协议原型检测** — 自动识别 14 种协议类型并加载对应检查表
- **漏洞知识库** — 50+ 分类真实漏洞模式替代静态 10 模式列表
- **不变量引擎** — 从 NatSpec、LLM 与模式提取不变量;生成 Foundry 不变量测试
- **上下文感知严重性校准** — 检查风险上下文后再降级
- **验证门修复** — `"pending"` 发现现在通过 LLM 分析
- **专家感知置信度惩罚** — 专业化单智能体仅 -0.05 惩罚
- **行桶去重修复** — 移除 `(line // 10) * 10` 桶
- **DeFi 检测器集成** — `DeFiVulnerabilityDetector` 在主增强引擎中运行
- **1461 个测试** 通过(55 个测试文件,约 50 秒)
### v3.2 — 作业统计与 UI 修复
- **修复作业统计** — 确保 findings/cost/LLM 统计正确
- **UI 重绘修复** — 替换滚动容器防止残留帧
- **移动“作业详情”到边框标题**
- **移除 `CLAUDE.md`**
### v3.0 — 全屏内联文本 TUI
- **零 `app.suspend()`** — TUI 永不消失
- **后台 PoC 生成** — 通过 `AuditRunner.start_poc_generation()`
- **后台报告生成** — 通过 `AuditRunner.start_report_generation()`
- **后台 GitHub 审计** — 通过 `AuditRunner.start_github_audit()`
- **内联合约选择器** — 过滤多选,`a`/`n` 全选/全不选,颜色标记
- **内联 GitHub 流程** — 克隆→选择→审计,不离开 TUI
- **内联设置** — API 密钥与模型配置
- **会话成本条** — 按提供者实时跟踪
- **键盘驱动** — `n`/`r`/`h`/`p`/`o`/`f`/`s`/`q`
### v2.2 — 文本化仪表盘 TUI
- 全屏 TUI,1 秒刷新
- 主屏幕作业表与成本条
- 作业详情屏幕实时日志与进度
- 模态对话框替代 questionary
- 后台审计执行与输出捕获
- 作业管理器与每作业成本跟踪
### v2.1 — 并行审计、Slither 移除与测试清理
- **并行审计** — 最多 8 个工作线程
- **线程安全进度** — `ContractAuditStatus` 加锁,`ThreadDemuxWriter` 多路复用
- **后审计汇总** — 合并结果视图
- **LLM 使用跟踪** — 令牌与成本统计
- **移除 Slither** — 完全移除依赖
- **测试清理** — 移除 40+ 旧/慢测试文件
### v2.0 — 交互式菜单 TUI
- 菜单驱动界面
- 审计向导、恢复、历史、PoC、报告
- 多链获取与即时审计
- 设置管理
### v1.5 — 三提供者 LLM 支持与增强分析
- **Anthropic Claude** 集成
- **6 代理 AI 集成**(2 OpenAI + 2 Gemini + 2 Anthropic)
- **自动跨提供者降级**
- **更新模型**(GPT-5.3、Gemini 3.0/Pro)
- **设置向导更新**
- **修复生成 Foundry 命令**
## 许可证
Aether 在 **MIT 许可证** 下分发。详见 [LICENSE](LICENSE)。
## 作者
**Dhillon Andrew Kannabhiran** (@l33tdawg)
- 邮箱:l33tdawg@hitb.org
- Twitter:[@l33tdawg](https://twitter.com/l33tdawg)
- GitHub:[@l33tdawg](https://github.com/l33tdawg)
## 贡献
欢迎贡献!欢迎提交问题、Fork 仓库并创建 Pull 请求。
标签:75+漏洞库, AST解析, Claude, CVE检测, Foundry, Gemini, GPT, ML校准, PoC生成, Python框架, SAGE, SEO, Solidity, Token异常, TUI, 上下文关联, 不变性提取, 主网分叉, 共享内存, 区块链安全, 协作代理, 协议原型, 去中心化安全, 去重, 多智能体LLM, 控制流图, 智能合约安全, 智能合约审计, 机构记忆, 模式检测, 漏洞利用验证, 漏洞管理, 符号执行, 置信度提升, 语义消歧, 请求拦截, 跨合约分析, 过滤, 逆向工具, 静态检测