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, 控制流图, 智能合约安全, 智能合约审计, 机构记忆, 模式检测, 漏洞利用验证, 漏洞管理, 符号执行, 置信度提升, 语义消歧, 请求拦截, 跨合约分析, 过滤, 逆向工具, 静态检测