
AIスマートコントラクトのセキュリティ分析とPoC生成フレームワーク
Aetherは、Solidityスマートコントラクトの解析、脆弱性の発見、Foundryベースの概念実証(PoC)テストの生成、メインネットフォーク上でのエクスプロイト検証を行うPythonベースのフレームワークです。Solidity AST解析、汚染解析、制御フローグラフ解析、クロスコントラクト解析、Halmosシンボリック実行、180以上のパターンベースの静的検出器、共有 SAGE 組織記憶を備えた協調型マルチエージェントLLMパイプライン(GPT/Gemini/Claude)、14のプロトコルアーキタイプ、75以上のエクスプロイト知識ベース、MLキャリブレーション済み検出、トークン特性検出、不変条件の抽出、関連コントラクトのコンテキスト解決、高度なコンテキスト認識フィルタリングを、単一の永続的なフルスクリーンTUIに統合します。
協調エージェントパイプライン — ディープ分析パイプラインは、5つの独立パスから、SAGE組織記憶を通じて構造化知識を共有する5つの協調エージェントへと変わります:
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)と、不足していた validate_anthropic_key() メソッドを特定した @pro258b(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 統合により、コンパイル直後に PoC を実行PoCTestResult データクラスによる JSON 結果解析で、合格・不合格・エラーを構造化して報告POC_TESTING フェーズを追加し、TUI での進行状況をライブ追跡Halmos シンボリック実行 — シンボリック実行による形式検証:
HalmosRunner: 生成されたプロパティに対して Halmos シンボリックテストを実行HalmosPropertyGenerator: 抽出されたインバリアントから検証プロパティを自動生成HalmosSymbolicNode パイプライン・ノードを検証ステージ 1.95 に統合enable_symbolic_verification, halmos_timeout制御フローグラフ解析 — コンパイラレベルの制御フロー理解:
solidity_ast.py の BasicBlock, CFGEdge, ControlFlowGraph データクラスbuild_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 データクラスで、真陽性・偽陽性と過去の精度を追跡EnhancedVulnerabilityDetector で、検出器の実績に基づいて信頼度ウェイトを調整関連コントラクトコンテキスト — LLM 解析が依存関係の全ソースコードを参照できるようになりました:
RelatedContractResolver が、親・インターフェース・ライブラリ・依存コントラクトを自動発見技術的負債の解消 — 8,500 行のデッドコードを削除:
ai_ensemble.py, audit_engine.py, fork_verifier.pyslither_project_cache を削除Solidity AST 解析 — Aether v4.0 は py-solc-x によるコンパイラを利用したコード解析を追加し、正規表現のみの静的解析を超えます:
solc --ast-json 統合により、継承の解決、関数の可視性、スロット番号付きのストレージレイアウト、関数ごとの状態変数の読み書き追跡を実現タイント解析エンジン — ユーザー制御の入力をコントラクト全体で追跡し、危険なデータフローを特定します:
クロスコントラクト解析(Pass 3.5) — 複数コントラクトにまたがる脆弱性を対象とする新しいディープ解析パス:
トークン特性データベース — 実際のエクスプロイトを引き起こす 12 カテゴリの非標準 ERC-20 挙動:
静的検出パイプラインとアーキタイプチェックリストに統合されました。
拡張精度エンジン — 高度な丸め・精度脆弱性の検出:
実行可能な PoC 生成 — 生成された Foundry テストが実際にコンパイル・実行できるようになりました:
LLM パイプラインの改善:
ディープ解析エンジン — Aether v3.5 は、脆弱性の見つけ方を根本的に変えます。1 回の「バグを見つけて」という LLM 呼び出しから、プロの監査人がコードレビューに取り組む方法(まず理解し、それから体系的に攻撃する)を反映した、構造化された 6 パスのパイプラインへ移行します。
コントラクト全体を単一のプロンプトで LLM に送る代わりに、Aether は累積コンテキストを持つ 6 つの順次解析パスを実行します:
Pass 1〜2 はコントラクトのコンテンツハッシュでキャッシュされるため、再監査時は理解フェーズをスキップします。後続の各パスは以前のすべてのコンテキストを受け取り、包括的な攻撃モデルを構築します。AETHER_DEEP_ANALYSIS=1 でフィーチャーフラグが制御され(デフォルト ON)、失敗時はワンショットにフォールバックします。
バグの分析前に、Aether はコントラクトが実装するプロトコルがどの種類かを検出し、アーキタイプ固有の脆弱性チェックリストを読み込みます:
合計 10 のアーキタイプがあり、それぞれに実際のエクスプロイトから得られた 3〜7 個の固有チェックリスト項目があります。
従来の静的な 10 パターンのリストに代わり、50 以上の分類された実際のエクスプロイトパターンを格納する構造化データベース:
各パターンには、コード指標、欠落している保護、ステップバイステップのエクスプロイトメカニズム、実際の前例(金額付き)が含まれます。パターンは検出されたアーキタイプとエージェントのフォーカスエリアによってフィルタリングされます。
プロトコルのインバリアントを 3 つのソースから自動抽出します:
@invariant タグFoundry の invariant_*() テストスイートを生成し、形式検証の軽量版の証明として機能します — インバリアントテストの失敗は、バグが実在することを証明します。
division_by_zero、integer_underflow などを一律に低に格下げしない。判定の前に、所見が unchecked{} ブロック内にあるか、値転送の近くにあるか、価格計算内にあるか、オラクルコンテキスト内にあるかを確認する"pending" の所見は LLM 解析に通過するようになりました(以前は "validated" のみが通過し、多くの実際の所見が黙って失われていました)(line // 10) * 10 バケット化を削除DeFiVulnerabilityDetector(2 段階の存在/非存在解析)が、フローベースのパイプラインだけでなく、メインの拡張監査エンジンでも実行されるようになりました完全インラインのテキスト TUI — Aether v3.0 は永続的なフルスクリーンアプリケーションで、生のターミナルに落ちることはありません。監査、PoC 生成、レポート生成、GitHub スコープ選択、設定構成など、すべての操作が TUI 内で完結します:
app.suspend() 呼び出しゼロ — TUI が消えることはなく、目まぐるしいターミナル切り替えもありませんEnter を押すと、ライブ更新される出力、フェーズ進捗バー、メタデータを表示a/n ですべて/なし、入力でフィルタ、以前に監査したコントラクトは色分け表示n 新規監査、r 再開、h 履歴、p PoC、o レポート、f 取得、s 設定、 終了4 種類のバックグラウンドジョブ: すべての高負荷操作は AuditRunner を介してバックグラウンドのデーモンスレッドとして実行され、出力は ThreadDemuxWriter が取り込み、JobDetailScreen で表示されます:
| ジョブタイプ | 説明 |
|---|---|
local | 単一または並列のコントラクト監査 |
github | 事前選択されたスコープでの GitHub リポジトリ監査 |
poc | Foundry の概念実証(PoC)生成 |
3 プロバイダーの 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 件の Critical/High 所見からパターンを抽出し、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 — 新規監査3 種類のソースタイプを持つマルチステップウィザード:
ローカルファイルまたはディレクトリ:
GitHub URL:
a/n で全選択/全解除)ブロックエクスプローラ URL / アドレス:
r — 監査の再開進行中のすべての GitHub 監査を、プロジェクト名、スコープ、進捗(N/M コントラクト)、最終更新時刻とともにテーブル表示します。1 つ選択すると、保留中のコントラクトを確認してバックグラウンドジョブとして起動します。
h — 監査履歴両データベース(ローカル + GitHub)の過去の全監査を統合表示します。エントリを選択するとサブメニューが表示されます:
p — PoC 生成プロジェクトを選択し、最大項目数、最小深刻度、コンセンサスのみのフィルタリングを設定します。PoC 生成はバックグラウンドジョブとして実行され、ジョブテーブルで進行状況を確認できます。
o — レポートプロジェクト、スコープ、形式(markdown/json/html/すべて)を選択します。レポート生成はバックグラウンドジョブとして実行されます。
f — コントラクト取得10 以上のサポートチェーンからネットワークを選択し、アドレスを入力するかエクスプローラ URL を貼り付けて、検証済みソースコードを取得し、必要に応じてすぐに監査できます。
s — 設定Enter — ジョブ詳細ジョブテーブルの任意の行で Enter を押すと以下が表示されます:
q — 終了TUI を終了します。ジョブが実行中の場合は確認を求めます。
build_cfg() が支配木とループヘッダ検出を備えた基本ブロックを構築。アセンブリブロックの解析。CFG コンテキストを深層分析と汚染伝播に供給RelatedContractResolver を備えたコントラクト間関係アナライザHalmosRunner + HalmosPropertyGenerator。検証ステージ 1.95 に統合。Halmos 未インストール時は優雅に縮退AccuracyTracker が提出結果を記録し、検出器ごとの信頼度ウェイトを生成。履歴データからの深刻度キャリブレーションを深層分析に注入RelatedContractResolver が親、インターフェース、ライブラリ、依存コントラクトを検出。標準ライブラリの要約を備えたパスごとの予算システム./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) — キーバインドと 1 秒リフレッシュタイマーを備えたメインの Textual アプリ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(クロスコントラクト): 理解 → 攻撃対象領域 → 不変条件 → クロスコントラクト → クロス関数 → 敵対的 → エッジケース。モデル層選択、キャッシュ、few-shot 例、チェーン・オブ・ソートの強制、Pass 2 での CFG コンテキスト、Pass 5 での ML 深刻度キャリブレーション、パスごとの関連コントラクトコンテキストcore/protocol_archetypes.py — プロトコルアーキタイプ検出(LIQUID_STAKING、PERPETUAL_DEX、CDP_STABLECOIN、YIELD_AGGREGATOR を含む 14 タイプ)。アーキタイプごとの脆弱性チェックリスト付き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 — 信頼境界検出、union-find グルーピング、依存関係コンテキスト用の RelatedContractResolver を備えたコントラクト間関係分析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/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 — JSON 出力とマルチプロバイダローテーションを備えた構造化 LLM 分析(GPT/Gemini/Claude)core/enhanced_prompts.py — 知識ベースからの動的エクスプロイトパターン読み込み、few-shot 例、深刻度キャリブレーション、チェーン・オブ・ソートの強制を備えた本番用プロンプトテンプレートcore/foundry_poc_generator.py(約 8000 行)— AST ベースの分析、反復的なコンパイルフィードバック(最大 5 回試行)、PoCTestResult の解析と fork モード対応を備えた forge test --json による自動実行core/llm_foundry_generator.py — モック API ドキュメントと推奨 setUp パターンを備えた LLM ベースのテスト生成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
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` の解析とフォークモード対応を備えます。ライブTUI追跡のための `POC_TESTING` フェーズ
- **Halmosシンボリック実行** — 不変条件の形式的検証のための `HalmosRunner`、`HalmosPropertyGenerator`、`HalmosSymbolicNode` パイプラインノード(検証ステージ1.95)。Halmosがインストールされていない場合はグレースフルデグラデーションします
- **制御フローグラフ解析** — `build_cfg()` を備えた `BasicBlock`、`CFGEdge`、`ControlFlowGraph`、ドミネータツリー、ループヘッダー検出、アセンブリブロック解析。CFGコンテキストをディープ解析パス2に注入。ブランチを考慮したテイント伝播
- **MLフィードバックループ** — `AccuracyTracker` は `get_detector_accuracy()` と `get_detector_weights()` で検出器ごとの統計を記録。`EnhancedVulnerabilityDetector` での信頼度ウェイト調整。ディープ解析パス5での深刻度キャリブレーション
- **関連コントラクトコンテキスト** — `RelatedContractResolver` はパスごとの予算システム(200K/100K/50K文字)で親、インターフェース、ライブラリ、依存コントラクトを発見。標準ライブラリの要約、単一ファイル内の兄弟コントラクト発見
- **技術的負債の解消** — デッドコード8,500行を削除:`ai_ensemble.py`、`audit_engine.py`、`fork_verifier.py` を削除し、CLI、監査ランナー、TUI画面、レポートジェネレーターからすべてのai_ensemble参照を除去
- 76のテストファイルで2059件のテストが成功
### v4.0 — Solidity AST解析、テイント分析&データフロー追跡
- **Solidity ASTパーサー** — py-solc-xによる完全なsolc統合で、適切な継承解決、関数の可視性、ストレージレイアウト、状態の読み書き追跡を実現。グレースフルなregexフォールバック
- **テイント分析エンジン** — ユーザー制御の入力を8種類のソースから12種類の危険なシンクまで追跡し、サニタイザー検出とクロスコントラクト追跡を実装
- **パイプライン統合** — ASTデータをパス1に、テイントデータをパス2に供給。テイント対応の検証ステージ1.85
- 67のテストファイルで1839件のテストが成功(約23秒)
### v3.8 — 検出機能の強化&PoC生成
- **クロスコントラクト解析** — コントラクト間リレーションシップアナライザー、信頼境界検出、union-findグルーピングを備えた新しいパス3.5
- **トークンの非標準挙動データベース** — 非標準ERC-20の挙動12カテゴリ(手数料付き転送、リベース、ERC-777など)
- **精度エンジンの強化** — シェアインフレーション検出、丸め方向の分析、除算切り捨ての追跡、ダスト悪用、アキュムレーターオーバーフロー
- **実行可能なPoC生成** — モックコントラクトライブラリ(ERC20、Oracle、WETH、FlashLoan)、インテリジェントなsetUp()、最大コンパイル試行回数3→5
- **Few-shot例** — 実際の脆弱性と偽陽性の例をディープ解析パス3、4、5に追加
- **深刻度キャリブレーション** — 具体的なしきい値(Critical >$1M、High >$100K、Medium >$10K、Lowは理論上)
- **Chain-of-thoughtの強制** — JSON出力前に5段階の推論を必須化
- **AIアンサンブルを廃止** — ディープ解析パス全体でのマルチプロバイダーローテーションに置き換え
- **マルチプロバイダーローテーション** — Gemini Flash(低コストパス)、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)
- **コントラクトスキャナーの改善** — 抽象コントラクトもスコアリング対象となり、モノレポ対応のためしきい値を調整
- 1528件のテストが成功
### v3.5.2 — 偽陽性の削減
- **コントラクト検出におけるスクリプト検出** — `script/`/`scripts/` 配下のファイル、`.s.sol` ファイル、`forge-std/Script.sol` をインポートするか `is Script` を継承するコントラクトはデプロイスクリプトとしてタグ付けされ、LLM脆弱性分析から除外されます。Foundryのデプロイヘルパーが本番コードとして分析されることによる偽陽性のクラス全体を排除します
- **LLMプロンプトのファイルコンテキストマーカー** — 結合コンテンツにファイルごとの `// FILE: <name>` マーカーが含まれるようになり、ディープ解析パス1と3は各ファイルを `[PRODUCTION]` または `[DEPLOYMENT SCRIPT]` とラベル付けする `## Project Files` ヘッダーを受け取るため、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()`)されるケースを検出し、操作がアトミックであるためフロントランニングの懸念を偽陽性としてマークするようになりました
- **LLM検証パターン#18** — LLM検証プロンプトの18パターン偽陽性チェックリストに「アトミックなデプロイ+初期化」を追加
- 56のテストファイルで1489件のテストが成功(約40秒)、1461件から増加
### v3.5 — ディープ解析エンジン
- **6パスディープ解析パイプライン** — ワンショットLLM呼び出しを構造化マルチパス推論に置き換え:プロトコル理解 → 攻撃面マッピング → 不変条件違反分析 → 関数間相互作用 → 敵対的モデリング → 境界&エッジケース。各パスは前のパスからの蓄積コンテキストを受け取ります。パス1〜2はコンテンツハッシュでキャッシュされ、再監査を高速化
- **プロトコルアーキタイプ検出** — プロトコルタイプを自動識別(ERC-4626 Vault、Lending Pool、DEX/AMM、Bridge、Staking、Governance、Oracle、NFT Marketplace、Token、Orderbook)。実際のエクスプロイトから導出されたアーキタイプ別脆弱性チェックリスト付き
- **エクスプロイト知識ベース** — 9カテゴリ(Inflation/Share、Reentrancy、Oracle、Governance、Bridge、Precision/Rounding、Access Control、Economic/DeFi、Logic)にわたる50以上の分類済みエクスプロイトパターン。静的な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 を維持
- **ラインバケット重複排除の修正** — 恣意的な境界問題(9行目と11行目が異なるバケットに分かれる)を引き起こしていた `(line // 10) * 10` バケット化を削除。重複排除は正規化された脆弱性タイプのみを使用し、行の近接性は `_findings_match_fuzzy()` が処理します
- **DeFi検出器の統合** — `DeFiVulnerabilityDetector`(2段階の存在/不在セマンティック分析)が `EnhancedVulnerabilityDetector` とともに拡張監査エンジンで実行されるようになりました
- **プロンプト内の動的エクスプロイトパターン** — `enhanced_prompts.py` はフォーカスエリアでフィルタリングされたExploitKnowledgeBaseからパターンを読み込むようになり、静的なパターンにフォールバックします
- 55のテストファイルで1461件のテストが成功(約50秒)
### v3.2 — ジョブ統計&UI修正
- **ジョブのfindings/コスト/LLM統計が常にゼロ表示になる問題を修正** — 監査ワーカーは `run_audit()` からresults dictを取得してfindings数を抽出するように。シングルトン参照を孤立させていた `LLMUsageTracker.reset()` を削除。4種類すべてのワーカーがスナップショット差分からジョブごとの統計を計算
- **ウィンドウ切替時のUI再描画アーティファクトを修正** — JobDetailScreenのスクロール可能コンテナをプレーンな `Container` + `overflow: hidden` に置き換え、古いコンポジターフレームを防止
- **「Job Details」をborder_titleに移動** — メタデータパネルの描画をよりクリーンに
- `CLAUDE.md` をgit追跡から削除
### v3.0 — 完全インラインTextual TUI
- **`app.suspend()` 呼び出しゼロ** — TUIがrawターミナルに落ちることはなく、すべての操作がインラインで実行されます
- **バックグラウンド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 — すべて完全インライン
- 50のテストファイルで770件のテストが成功
### v2.2 — Textual TUIダッシュボード
- 永続アプリ、キーバインド、1秒更新タイマーを備えたフルスクリーンTextual TUI
- ライブジョブテーブルとセッションコストバーを備えたMainScreen
- ライブログビューアー、フェーズ進行バー、メタデータを備えたJobDetailScreen
- questionaryプロンプトを置き換えるモーダルダイアログ(確認、テキスト入力、選択、チェックボックス、パスピッカー)
- ThreadDemuxWriter出力キャプチャによるAuditRunner経由のバックグラウンド監査実行
- セッションジョブレジストリ用のJobManagerシングルトン
- LLMUsageTrackerスナップショットによるジョブごとのコスト追跡
### v2.1 — 並列監査、Slither削除&テスト整理
- **並列監査エンジン** — `ThreadPoolExecutor` で複数のコントラクトを並行実行。最大8並列ワーカーまで設定可能
- **スレッドセーフな進捗追跡** — ロック付き `ContractAuditStatus`、stdout多重化のための `ThreadDemuxWriter`
- **監査後サマリー** — 並列監査完了後の統合結果ビュー
- **LLM使用量追跡** — 3プロバイダーすべてのトークン使用量、コスト、API呼び出しを追跡
- **Slitherを完全削除** — すべての依存関係、統合コード、テストを削除(約1200行)。パターンベース検出器+Foundry ABI+regexが唯一の分析ツール
- **テストスイート整理** — 40以上の旧式・低速・統合テストファイルを削除
### v2.0 — インタラクティブメニューTUI
- プライマリインターフェースとしてのインタラクティブメニュー駆動TUI
- ソース選択、機能チェックボックス、確認を備えたガイド付き監査ウィザード
- 進行中のGitHub監査を再開する機能
- ローカルとGitHubデータベースにわたる統合監査履歴ブラウザー
- メニューからの統合PoC生成とレポートワークフロー
- 任意の即時監査付きマルチチェーンコントラクト取得
- メニューからの設定管理
- メニューからのコンソール起動/復帰
### v1.5 — 3プロバイダーLLMサポート&分析の強化
- 3番目のLLMプロバイダーとしてAnthropic Claude統合(Sonnet 4.5、Opus 4.6、Haiku 4.5)
- 6エージェントAIアンサンブル:OpenAI 2 + Gemini 2 + Anthropicスペシャリストエージェント2
- 最大可用性のための自動クロスプロバイダーフォールバック
- 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を提出し、リポジトリをフォークして、プルリクエストを作成してください。
| カテゴリ | 重大度 | トークン例 |
|---|
| 転送時手数料 | 高 | USDT, STA, PAXG |
| リベーストークン | 高 | stETH, AMPL, OHM |
| ERC-777 コールバック | 高 | imBTC |
| フラッシュミント可能 | 高 | DAI |
| 非標準の戻り値 | 中 | 旧 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 | オフバイワン、期限・スリッページ欠落、未チェック戻り値、自己転送の会計処理 |
qreport | 監査レポート生成(markdown/json/html) |
forge test --json による自動実行TextInputDialogSelectDialogCheckboxDialogPathDialogContractSelectorDialogGitHubAuditHelper — TUI 統合のために分解された GitHub 監査操作theme.tcss — シアン基調の Textual CSScore/token_quirks.py — トークン特性データベース(非標準 ERC-20 動作の 12 カテゴリ)core/halmos_runner.py — 形式的検証のための Halmos シンボリック実行ランナーcore/halmos_property_generator.py — 不変条件から Halmos 検証プロパティを自動生成core/accuracy_tracker.py — ML フィードバックループ: 検出器ごとの精度追跡、信頼度ウェイト調整、深刻度キャリブレーションcore/data_decoding_analyzer.pycore/token_quirks.py を介して静的検出パイプラインに統合