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 行为:
已集成到静态检测流水线和原型检查清单中。
增强精度引擎 — 高级舍入和精度漏洞检测:
可运行 PoC 生成 — 生成的 Foundry 测试现在可真正编译并运行:
LLM 流水线改进:
深度分析引擎 — Aether v3.5 从根本上改变了工具发现漏洞的方式,从一次性的“找 bug” LLM 调用转变为结构化的 6-Pass 流水线,复刻了专业审计师的代码审查方式:先理解,再系统性地攻击。
Aether 不再将整个合约连同单个提示发送给 LLM,而是运行六个顺序分析 Pass,并累积上下文:
Pass 1-2 按合约内容哈希缓存,因此重新审计会跳过理解阶段。每个后续 Pass 都会接收之前的所有上下文,构建全面的攻击模型。通过 AETHER_DEEP_ANALYSIS=1 功能标志控制(默认开启);失败时回退到一次性分析。
在分析 bug 之前,Aether 会检测合约实现了哪种类型的协议,并加载特定于原型的漏洞检查清单:
共 10 种原型,每种包含 3-7 个来自真实漏洞利用的特定检查项。
一个结构化的数据库,包含 50+ 种分类的真实漏洞利用模式,取代了之前静态的 10 模式列表:
每种模式包括代码特征、缺失的保护措施、逐步漏洞利用机制,以及真实世界先例(含美元金额)。模式会根据检测到的原型和智能体关注领域进行过滤。
自动从三个来源提取协议不变量:
@invariant 标签生成 Foundry invariant_*() 测试套件,作为轻量级形式化验证证明 — 不变量测试失败即证明该 bug 是真实的。
division_by_zero、integer_underflow 等一概降级为低危。现在会在决定前检查发现是否位于 unchecked{} 块中、靠近价值转移、位于价格计算中或处于预言机上下文中"pending" 发现现在会进入 LLM 分析(之前只有 "validated" 能通过,导致许多真实发现被静默丢弃)(line // 10) * 10 分桶,该分桶会将相距 2 行的发现拆分到不同分组DeFiVulnerabilityDetector(两阶段存在/不存在分析)现在在主增强审计引擎中运行,而不仅仅在基于流程的流水线中全内联 Textual TUI — Aether v3.0 是一个持久化的全屏应用程序,绝不会降级到原始终端。所有操作 — 审计、PoC 生成、报告生成、GitHub 范围选择、设置配置 — 完全在 TUI 内运行:
app.suspend() 调用 — TUI 永远不会消失,没有突兀的终端切换Enter 查看实时滚动输出、阶段进度条和元数据a/n 全选/全不选,输入过滤,已审计合约用颜色区分n 新建审计,r 恢复,h 历史,p PoC,o 报告,f 获取,s 设置,q 退出四种后台任务类型:所有重操作都通过 AuditRunner 作为后台守护线程运行,输出由 ThreadDemuxWriter 捕获,并可在 JobDetailScreen 中查看:
| 任务类型 | 描述 |
|---|---|
local | 单个或并行合约审计 |
github | 带预选范围的 GitHub 仓库审计 |
poc | Foundry 概念验证生成 |
三提供商 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)自动排除在漏洞分析之外[PRODUCTION]/[DEPLOYMENT SCRIPT] 标签,使模型专注于生产代码onlyDistributor、authorized),并与硬编码模式一起识别Move 漏洞数据库集成:来自 77 次审计中 128 个严重/高危发现的模式,已适配 Solidity/EVM:
python setup.py # Interactive installer (recommended)
### 2. 启动 Aether```bash
python aether.py # Launches the full-screen Textual TUI
就这样。TUI 会通过键盘快捷键和模态对话框引导你完成所有操作。
OPENAI_API_KEY(用于 GPT 模型)GEMINI_API_KEY(用于 Gemini 模型)ANTHROPIC_API_KEY(用于 Claude 模型)ETHERSCAN_API_KEY(可选,用于获取已验证合约)如果你更倾向于手动安装:```bash
curl -L https://foundry.paradigm.xyz | bash && foundryup export PATH="$PATH:$HOME/.foundry/bin"
pip install solc-select solc-select install 0.4.26 0.8.0 0.8.19 0.8.20 latest
python -m venv venv && source venv/bin/activate pip install -r requirements.txt
## 配置
配置向导(`python setup.py`)负责处理所有配置。你也可以在 TUI 中通过 `s`(设置)进行配置:
- **配置 API 密钥** — 依次提示输入 OpenAI、Gemini、Anthropic、Etherscan 密钥,当前值以掩码显示
- **配置模型** — 从可用选项中为每个提供商选择模型
- **完整向导** — 先配置 API 密钥,再进行模型选择
- **分流设置** — 调整严重性阈值、置信水平和最大发现数
或直接设置环境变量:```bash
export OPENAI_API_KEY=sk-...
export GEMINI_API_KEY=...
export ANTHROPIC_API_KEY=...
配置存储在 ~/.aether/config.yaml 中。
数据库位置:
~/.aether/aetheraudit.db~/.aether/aether_github_audit.db所有交互均通过主屏幕上的键盘快捷键完成:
n — 新建审计多步骤向导,支持三种来源类型:
本地文件或目录:
GitHub URL:
a/n 全选/全不选)区块浏览器 URL / 地址:
r — 恢复审计显示所有进行中的 GitHub 审计表格,包含项目名称、范围、进度(N/M 个合约)和最后更新时间。选择一项以验证待处理合约并以后台任务方式启动。
h — 审计历史来自两个数据库(本地 + GitHub)的所有历史审计统一视图。选择任意条目即可显示子菜单:
p — 生成 PoC选择项目,配置最大数量、最低严重级别和仅共识过滤。PoC 生成以后台任务方式运行——在任务表中查看进度。
o — 报告选择项目、范围和格式(markdown/json/html/all)。报告生成以后台任务方式运行。
f — 获取合约从 10 多个受支持的网络中选择一条链,输入地址或粘贴区块浏览器 URL,获取已验证的源代码,并可选择立即进行审计。
s — 设置Enter — 任务详情在任务表的任意行上按 Enter 可查看:
q — 退出退出 TUI。如果有任务正在运行,会提示确认。
build_cfg() 构建包含支配树的基本块并检测循环头;解析汇编块;CFG 上下文馈入深度分析和污点传播RelatedContractResolverHalmosRunner + HalmosPropertyGenerator 用于不变量的形式化验证;集成在验证阶段 1.95;若未安装 Halmos 则优雅降级AccuracyTracker 记录提交结果并生成每个检测器的置信度权重;来自历史数据的严重级别校准被注入深度分析RelatedContractResolver 发现父合约、接口、库和依赖合约;每轮预算系统,带标准库摘要./output/ — 常规输出根目录./output/reports/ — 生成的报告./output/pocs/ — 生成的 Foundry PoC 套件./output/exploit_tests/ — 漏洞利用测试结果aether.py — 唯一入口点;启动 Textual TUIcli/interactive_menu.py — 创建 JobManager + AetherApp 的轻量垫片cli/tui/app.py — AetherApp(App) — 主 Textual 应用,带键绑定和 1 秒刷新定时器cli/tui/)MainScreen(任务表 + 成本栏)、JobDetailScreen(实时日志 + 阶段 + 元数据)、NewAuditScreen、HistoryScreen、ResumeScreen、PoCScreen、ReportsScreen、FetchScreen、SettingsScreenJobsTable(轮询 JobManager 的 DataTable)、CostBar(按提供商统计的会话成本)、LogViewer(增量刷新的 RichLog)、PhaseBar(Unicode 块进度条)ConfirmDialog、、、、、 — 均为 ModalScreen 子类cli/audit_runner.py — AuditRunner 类,在守护线程中运行审计、PoC、报告和 GitHub 审计core/job_manager.py — JobManager 单例:会话任务注册表(QUEUED/RUNNING/COMPLETED/FAILED/CANCELLED)core/audit_progress.py — 带每任务日志缓冲区的 ContractAuditStatus,以及用于捕获 stdout/stderr 的 ThreadDemuxWritercore/llm_usage_tracker.py — 线程安全单例,提供 snapshot() 用于计算每任务成本增量cli/main.py — AetherCLI 类(约 2600 行)— AuditRunner 使用的内部审计编排器core/enhanced_audit_engine.py — 集成深度分析的主审计引擎core/post_audit_summary.py — 审计后面板,按提供商细分成本core/deep_analysis_engine.py — 6 轮 LLM 流水线外加 Pass 3.5(跨合约):理解 → 攻击面 → 不变量 → 跨合约 → 跨函数 → 对抗性 → 边界情况;模型层级选择、缓存、少样本示例、思维链强制、Pass 2 中的 CFG 上下文、Pass 5 中的机器学习严重级别校准、每轮的相关合约上下文core/protocol_archetypes.py — 协议原型检测(14 种类型,包括 LIQUID_STAKING、PERPETUAL_DEX、CDP_STABLECOIN、YIELD_AGGREGATOR),带每种原型的漏洞检查清单core/exploit_knowledge_base.py — 14 个类别中 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 — 合约间关系分析,含信任边界检测、并查集分组,以及用于依赖上下文的 RelatedContractResolvercore/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/validation_pipeline.py — 多阶段流水线:内置保护检查、治理检测、污点感知验证(阶段 1.85)、Halmos 符号验证(阶段 1.95)、部署验证、本地验证core/governance_detector.py, core/deployment_analyzer.py, core/llm_false_positive_filter.pycore/control_flow_guard_detector.py, core/inheritance_verifier.pycore/nodes/halmos_node.py — 用于符号执行验证的 HalmosSymbolicNode 流水线节点core/enhanced_llm_analyzer.py — 结构化 LLM 分析(GPT/Gemini/Claude),带 JSON 输出和多提供商轮换core/enhanced_prompts.py — 生产级提示模板,支持从知识库动态加载漏洞利用模式、少样本示例、严重级别校准和思维链强制core/foundry_poc_generator.py(约 8000 行)— 基于 AST 的分析、迭代编译反馈(最多 5 次尝试)、通过 forge test --json 自动执行,支持 PoCTestResult 解析和分叉模式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 — 机器学习反馈回路:提交结果、赏金收益、每个检测器的准确率统计、置信度权重生成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
76 个测试文件中包含 2059 项测试,运行时间约 23 秒:```bash python -m pytest tests/ # All tests (~23s, 2059 tests) python -m pytest tests/test_enhanced_detectors.py -v # Single file python -m pytest tests/test_enhanced_detectors.py::TestArithmeticAnalyzer -v # Single class python -m pytest tests/ -k "governance" -v # Pattern match python -m pytest tests/ --cov=core --cov-report=html # With coverage
## 故障排查
- **未找到 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 上下文注入深度分析 Pass 2;支持分支感知的污点传播
- **ML 反馈循环** — `AccuracyTracker` 记录提交结果,通过 `get_detector_accuracy()` 和 `get_detector_weights()` 获取每个检测器的统计信息;在 `EnhancedVulnerabilityDetector` 中调整置信度权重;在深度分析 Pass 5 中进行严重性校准
- **相关合约上下文** — `RelatedContractResolver` 发现父合约、接口、库和依赖合约,配备逐 Pass 预算系统(200K/100K/50K 字符);标准库摘要;单文件同级发现
- **技术债务清理** — 删除了 8,500 行死代码:移除了 `ai_ensemble.py`、`audit_engine.py`、`fork_verifier.py`;从 CLI、审计运行器、TUI 界面、报告生成器中移除了所有 ai_ensemble 引用
- **2059 个测试** 在 76 个测试文件中全部通过
### v4.0 — Solidity AST 解析、污点分析与数据流跟踪
- **Solidity AST 解析器** — 通过 py-solc-x 完整集成 solc,实现正确的继承解析、函数可见性、存储布局、状态读/写跟踪;正则表达式优雅回退
- **污点分析引擎** — 跟踪用户控制的输入,从 8 种来源类型到 12 个危险汇聚点(sink),带消毒器检测和跨合约跟踪
- **流水线集成** — AST 数据输入 Pass 1,污点数据输入 Pass 2,污点感知验证阶段 1.85
- **1839 个测试** 在 67 个测试文件中全部通过(约 23 秒)
### v3.8 — 增强检测与 PoC 生成
- **跨合约分析** — 新增 Pass 3.5,包含合约间关系分析器、信任边界检测、并查集(union-find)分组
- **代币特性数据库** — 12 类非标准 ERC-20 行为(转账收费 fee-on-transfer、基数调整 rebasing、ERC-777 等)
- **增强精度引擎** — 份额通胀检测、舍入方向分析、除法截断跟踪、粉尘利用、累加器溢出
- **可运行 PoC 生成** — 模拟合约库(ERC20、Oracle、WETH、FlashLoan)、智能 setUp()、最大编译尝试次数 3→5
- **少样本示例** 在深度分析 Pass 3、4、5 中,附带真实漏洞与误报示例
- **严重性校准** — 具体阈值(严重 >$1M、高危 >$100K、中危 >$10K、低危 理论性)
- **强制思维链** — 在 JSON 输出前必须进行 5 步推理
- **AI 集成退役** — 被跨深度分析 Pass 的多提供商轮换取代
- **多提供商轮换** — Gemini Flash(廉价 Pass)、Anthropic Claude(推理)、OpenAI GPT(多样性)
- **1682 个测试** 全部通过
### v3.7 — 扩展的原型与利用模式
- **4 个新协议原型** — LIQUID_STAKING、PERPETUAL_DEX、CDP_STABLECOIN、YIELD_AGGREGATOR(总计 10→14)
- **25 个新利用模式** — CROSS_CONTRACT、SIGNATURE_AUTH、TOKEN_INTEGRATION、PROXY_UPGRADE、TYPE_SAFETY 类别(总计 50→75)
- **改进的合约扫描器** — 抽象合约现在也会被评分,为 monorepo 支持调整了阈值
- **1528 个测试** 全部通过
### v3.5.2 — 减少误报
- **合约发现中的脚本检测** — 位于 `script/`/`scripts/` 下的文件、`.s.sol` 文件,以及导入 `forge-std/Script.sol` 或继承 `is Script` 的合约都会被标记为部署脚本,并从 LLM 漏洞分析中排除。这消除了 Foundry 部署辅助工具被当作生产代码分析所产生的一整类误报
- **LLM 提示中的文件上下文标记** — 合并后的内容现在按文件包含 `// FILE: <name>` 标记,深度分析 Pass 1 和 3 会收到一个 `## Project Files` 标头,将每个文件标记为 `[PRODUCTION]` 或 `[DEPLOYMENT SCRIPT]`,以便 LLM 聚焦于正确的代码
- **动态修饰符检测** — `GovernanceDetector` 现在通过扫描带 `only` 前缀或 `msg.sender` 检查的修饰符定义,提取合约中定义的自定义访问控制修饰符(例如 `onlyDistributor`、`onlyMinter`、`authorized`)。这些修饰符与硬编码修饰符列表合并,用于 `has_access_control()` 和 `is_governance_function()`
- **函数级去重** — `VulnerabilityDeduplicator` 现在在合约代码可用时按 `(function_name, vuln_type)` 对发现进行分组,取代了会遗漏同一函数中相邻行重复项的脆弱精确行匹配。当函数上下文不可用时,回退到 20 行桶分组
- **放宽 AI 集成行容差** — `_findings_match_fuzzy()` 的容差从 ±5 行提高到 ±15 行,以捕获跨代理的同一函数重复项
- **构造函数原子性误报模式** — `_check_constructor_context()` 现在检测合约在同一构造函数中被部署(`new`/`Create2`)并初始化(`.initialize()`)的情况,由于这些操作是原子的,因此将抢先交易(front-running)问题标记为误报
- **LLM 验证模式 #18** — 在 LLM 验证提示的 18 模式误报清单中新增"原子部署 + 初始化"
- **1489 个测试** 在 56 个测试文件中全部通过(约 40 秒),高于此前的 1461 个
### v3.5 — 深度分析引擎
- **6-pass 深度分析流水线** — 用结构化的多 Pass 推理取代一次性 LLM 调用:协议理解 → 攻击面映射 → 不变量违反分析 → 跨函数交互 → 对抗性建模 → 边界与极端情况。每个 Pass 都会接收来自先前各 Pass 的累积上下文。Pass 1-2 按内容哈希缓存,以加快重新审计
- **协议原型检测** — 自动识别协议类型(ERC-4626 Vault、Lending Pool、DEX/AMM、Bridge、Staking、Governance、Oracle、NFT Marketplace、Token、Orderbook),并附带基于真实世界漏洞提炼的按原型漏洞检查清单
- **漏洞利用知识库** — 50+ 个分类利用模式,涵盖 9 个类别(通胀/份额、重入、预言机、治理、桥、精度/舍入、访问控制、经济/DeFi、逻辑),取代了静态的 10 模式列表。每个模式包含代码指标、缺失的保护措施、逐步利用机制、带美元金额的真实世界先例,以及原型适用性
- **不变量引擎** — 从 NatSpec `@invariant` 标记、LLM 分析和 6 个常见模式检测器(金库守恒、余额跟踪、供应核算、AMM 恒定乘积、借贷抵押、质押奖励)中提取协议不变量。生成 Foundry `invariant_*()` 测试套件作为轻量级形式化验证证明
- **上下文感知的严重性校准** — 用风险上下文检查取代一刀切的严重性降级。位于 `unchecked{}` 块中、靠近值转移(`call{value:}`、`_mint`、`safeTransfer`)、价格计算或预言机上下文中的发现保留其原始严重性
- **验证门修复** — `"pending"` 状态的发现现在会带 `needs_llm_validation` 标志进入 LLM 分析。只有明确的 `"false_positive"` 发现会被丢弃(此前,所有非 `"validated"` 的发现都会被静默过滤)
- **专家感知的置信度惩罚** — 与代理专长匹配的单代理发现(例如 AnthropicReasoningSpecialist + 经济攻击)获得 -0.05 惩罚;非专长发现保持 -0.15
- **行桶去重修复** — 移除了导致任意边界问题的 `(line // 10) * 10` 分桶(第 9 行和第 11 行落入不同桶)。去重现在仅使用归一化的漏洞类型,由 `_findings_match_fuzzy()` 处理行邻近度
- **DeFi 检测器集成** — `DeFiVulnerabilityDetector`(两阶段存在/缺失语义分析)现在与 `EnhancedVulnerabilityDetector` 一起在增强审计引擎中运行
- **提示中的动态利用模式** — `enhanced_prompts.py` 现在从 ExploitKnowledgeBase 加载按重点领域过滤的模式,并回退到静态模式
- **1461 个测试** 在 55 个测试文件中全部通过(约 50 秒)
### v3.2 — 任务统计与 UI 修复
- **修复任务发现/成本/LLM 统计始终显示为零的问题** — 审计工作线程现在从 `run_audit()` 捕获结果字典以提取发现数量;移除了使单例引用孤立的 `LLMUsageTracker.reset()`;所有 4 种工作线程类型都根据快照增量计算每任务统计
- **修复窗口切换时的 UI 重绘伪影** — 在 JobDetailScreen 中用普通 `Container` + `overflow: hidden` 替换了可滚动容器,以防止过期的合成器帧
- **将"任务详情"移至 border_title**,以实现更干净的元数据面板渲染
- 从 git 跟踪中移除了 `CLAUDE.md`
### v3.0 — 完全内联的 Textual TUI
- **零 `app.suspend()` 调用** — TUI 永远不会降级到原始终端;所有操作都在内联运行
- **后台 PoC 生成** — 通过 `AuditRunner.start_poc_generation()` 作为守护线程运行,并在 JobDetailScreen 中实时输出
- **后台报告生成** — 通过 `AuditRunner.start_report_generation()` 作为守护线程运行,并实时输出
- **后台 GitHub 审计** — 通过 Textual 对话框选择范围,审计通过 `AuditRunner.start_github_audit()` 作为守护线程运行
- **ContractSelectorDialog** — 近乎全屏的可筛选多选模态框,取代了基于 curses 的 `ScopeManager.interactive_select()`。空格键切换选择,`a`/`n` 全选/取消全选,输入以筛选,已审计合约以颜色区分
- **GitHubAuditHelper** — 围绕 `GitHubAuditor`/`AetherDatabase` 的分解式包装器,提供可从 Textual 界面调用的原子操作(`clone_and_discover`、`get_scope_state`、`save_new_scope`、`get_pending_contracts`、`handle_reaudit`)
- **内联设置** — 通过原生 TextInputDialog/SelectDialog 配置 API 密钥和模型,无需外部设置向导
- **内联 GitHub 范围管理** — 通过 SelectDialog 继续、重新审计或创建新范围;通过 ContractSelectorDialog 选择合约
- **重写了 6 个界面** — PoCScreen、ReportsScreen、SettingsScreen、NewAuditScreen、HistoryScreen、ResumeScreen — 全部完全内联
- **770 个测试** 在 50 个测试文件中全部通过
### v2.2 — Textual TUI 仪表盘
- 全屏 Textual TUI,带持久化应用、按键绑定和 1 秒刷新定时器
- MainScreen 带实时任务表和会话成本栏
- JobDetailScreen 带实时日志查看器、阶段进度条和元数据
- 模态对话框(确认、文本输入、选择、复选框、路径选择器)取代 questionary 提示
- 通过 AuditRunner 在后台执行审计,使用 ThreadDemuxWriter 捕获输出
- JobManager 单例用于会话任务注册
- 通过 LLMUsageTracker 快照进行每任务成本跟踪
### v2.1 — 并行审计、移除 Slither 与测试清理
- 并行审计引擎 — 使用 `ThreadPoolExecutor` 并发运行多个合约,可配置最多 8 个并行工作线程
- 线程安全的进度跟踪 — 带锁的 `ContractAuditStatus`,`ThreadDemuxWriter` 用于 stdout 多路复用
- 审计后摘要 — 并行审计完成后显示合并的结果视图
- LLM 用量跟踪 — 跟踪所有三个提供商的 token 用量、成本和 API 调用
- 完全移除 Slither — 删除了所有依赖、集成代码和测试(约 1200 行);基于模式的检测器 + Foundry ABI + 正则表达式是唯一的分析工具
- 测试套件清理 — 移除了 40+ 个旧/慢/集成测试文件
### v2.0 — 交互式菜单 TUI
- 交互式菜单驱动的 TUI 作为主要界面
- 引导式审计向导,带来源选择、功能复选框和确认
- 对进行中的 GitHub 审计支持恢复审计
- 跨本地和 GitHub 数据库的统一审计历史浏览器
- 从菜单集成的 PoC 生成和报告工作流
- 多链合约获取,可选立即审计
- 从菜单进行设置管理
- 从菜单启动/返回控制台
### v1.5 — 三提供商 LLM 支持与增强分析
- 集成 Anthropic Claude(Sonnet 4.5、Opus 4.6、Haiku 4.5)作为第三个 LLM 提供商
- 6 代理 AI 集成:2 个 OpenAI + 2 个 Gemini + 2 个 Anthropic 专家代理
- 自动跨提供商回退,实现最大可用性
- 更新了 OpenAI 模型(GPT-5.3)和 Google Gemini 模型(3.0 Flash/Pro)
- 设置向导更新,加入 Anthropic API 密钥配置和模型选择
- 修复了损坏的 generate-foundry CLI 命令
---
## 许可证
Aether 在 **MIT 许可证** 下分发。详情请参阅 [LICENSE](https://github.com/l33tdawg/aether/blob/HEAD/LICENSE) 文件。
## 作者
**Dhillon Andrew Kannabhiran** (@l33tdawg)
- 邮箱:[email protected]
- Twitter:[@l33tdawg](https://twitter.com/l33tdawg)
- GitHub:[@l33tdawg](https://github.com/l33tdawg)
## 贡献
欢迎贡献!请随时提交 issue、fork 本仓库并创建 pull request。
| 类别 | 严重程度 | 示例代币 |
|---|
| 转账扣费 | 高危 | 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 |
| Pass | 用途 | 模型级别 |
|---|
| Pass 1 | 协议理解 — 协议是什么、其不变量、价值流动、信任假设 | 廉价(缓存) |
| Pass 2 | 攻击面测绘 — 每个入口点、状态读/写、重入窗口 | 廉价(缓存) |
| Pass 3 | 不变量违反分析 — 系统性地检查每个不变量与每条代码路径 | 强 |
| Pass 4 | 跨函数交互 — 状态依赖分析、时间依赖、闪电贷序列 | 强 |
| Pass 5 | 对抗建模 — 明确的攻击者视角,包括闪电贷、MEV、多账户 | 强 |
| Pass 6 | 边界与边缘情况 — 首次/最后一次操作、零值、最大值、自引用操作 | 中等 |
| 原型 | 示例检查项 |
|---|
| ERC-4626 金库 | 首个存款人通胀、舍入方向、通过捐赠操纵份额价格 |
| 借贷池 | 预言机价格操纵、清算阈值操纵、坏账级联、利率操纵 |
| DEX/AMM | 首个 LP 操纵、三明治攻击、基于储备金的价格预言机 |
| 跨链桥 | 跨链重放、验证者被攻破、代币映射不匹配、提款证明伪造 |
| 质押 | 奖励计算操纵、奖励率溢出、解除质押重入 |
| 治理 | 闪电贷治理攻击、时间锁绕过、法定人数操纵 |
| 预言机 | 陈旧价格数据、价格偏差、L2 排序器停机 |
| 类别 | 模式数 | 示例 |
|---|
| 通胀/份额攻击 | 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 | 差一错误、缺少截止时间/滑点、未检查返回值、自转账记账 |
report| 审计报告生成(markdown/json/html) |
forge test --json 自动执行并支持分叉模式TextInputDialogSelectDialogCheckboxDialogPathDialogContractSelectorDialogGitHubAuditHelper — 为 TUI 集成拆分出的 GitHub 审计操作theme.tcss — 青色主题的 Textual CSScore/token_quirks.py — 代币特性数据库(12 类非标准 ERC-20 行为)core/halmos_runner.py — 用于形式化验证的 Halmos 符号执行运行器core/halmos_property_generator.py — 从不变量自动生成 Halmos 验证属性core/accuracy_tracker.py — 机器学习反馈回路:每个检测器的准确率跟踪、置信度权重调整、严重级别校准core/data_decoding_analyzer.pycore/token_quirks.py 集成到静态检测流水线中