
Фреймворк для анализа безопасности смарт-контрактов с помощью AI и генерации PoC
Версия 6.0 | Что нового в v6.0 | Журнал изменений
Aether — это фреймворк на Python для анализа смарт-контрактов Solidity, генерации отчетов об уязвимостях, создания proof-of-concept (PoC) тестов на основе Foundry и проверки эксплойтов на форках мейннета. Он объединяет парсинг AST Solidity, анализ потоков данных (taint analysis), анализ графа потока управления, межконтрактный анализ, символьное выполнение Halmos, более 180 паттерн-ориентированных статических детекторов, коллаборативный мультиагентный конвейер LLM (GPT/Gemini/Claude) с общей институциональной памятью SAGE, 14 протокольных архетипов, базу знаний из более 75 эксплойтов, калиброванное с помощью ML обнаружение, обнаружение особенностей токенов, извлечение инвариантов, разрешение контекста связанных контрактов и продвинутую контекстно-зависимую фильтрацию — все в едином полноэкранном TUI.
Коллаборативный конвейер агентов — Конвейер глубокого анализа преобразуется из 5 независимых проходов в 5 совместно работающих агентов, обменивающихся структурированными знаниями через институциональную память SAGE:
docker compose up -d, чтобы начать.Институциональная память SAGE — Aether теперь учится на каждом аудите, снижая количество ложных срабатываний и улучшая качество находок со временем:
SageFeedbackManager.sync_detector_accuracy() определяет детекторы с высокой/низкой производительностью и сохраняет рекомендации «что делать/не делать»docker compose up -d запускает SAGE; настройка через sage_enabled/sage_url в ~/.aether/config.yamlАвторы: Благодарим @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 — Созданные PoC для Foundry теперь автоматически компилируются и выполняются:
forge test --json сразу запускает PoC после компиляцииPoCTestResult для структурированного отчета о прохождении/неудаче/ошибкахPOC_TESTING в JobManager для отслеживания прогресса в реальном времени в TUIСимволическое выполнение Halmos — Формальная верификация с помощью символического выполнения:
HalmosRunner для выполнения символических тестов Halmos на основе сгенерированных свойствHalmosPropertyGenerator для автоматической генерации свойств верификации из извлечённых инвариантовHalmosSymbolicNode, интегрированный на этапе валидации Stage 1.95enable_symbolic_verification, halmos_timeoutАнализ графа потоков управления — Понимание потока управления на уровне компилятора:
BasicBlock, CFGEdge, ControlFlowGraph в solidity_ast.pybuild_cfg(), get_dominators(), get_loop_headers(), format_cfg_for_llm() для структурного анализаparse_assembly_block() для поддержки встроенного ассемблераЦикл обратной связи машинного обучения — Калибровка на основе исторических результатов:
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 из менеджера базы данныхРазбор AST Solidity — Aether v4.0 добавляет анализ кода с поддержкой компилятора через py-solc-x, выходя за рамки статического анализа на основе регулярных выражений:
solc --ast-json для правильного разрешения наследования, видимости функций, макета хранилища с номерами слотов и отслеживания чтения/записи переменных состояния для каждой функцииДвижок анализа помеченных данных — Отслеживает контролируемые пользователем входные данные через контракты для выявления опасных потоков данных:
Межконтрактный анализ (Pass 3.5) — Новый проход глубокого анализа, нацеленный на уязвимости нескольких контрактов:
База данных особенностей токенов — 12 категорий нестандартного поведения ERC-20, вызывающих реальные эксплойты:
Интегрирована в пайплайн статического обнаружения и контрольные списки архетипов.
Улучшенный движок точности — Расширенное обнаружение уязвимостей округления и точности:
Генерация работоспособных PoC — Созданные тесты Foundry теперь действительно компилируются и выполняются:
Улучшения пайплайна LLM:
Движок глубокого анализа — Aether v3.5 фундаментально меняет способ поиска уязвимостей инструментом, переходя от одноразового вызова LLM с формулировкой «найди ошибки» к структурированному 6-проходному пайплайну, который отражает подход профессиональных аудиторов к анализу кода: сначала понять, затем систематически атаковать.
Вместо отправки всего контракта LLM с одним промптом, Aether теперь выполняет шесть последовательных аналитических проходов с накопленным контекстом:
Проходы 1-2 кешируются по хешу содержимого контракта, поэтому повторные аудиты пропускают фазу понимания. Каждый последующий проход получает весь предыдущий контекст, создавая комплексную модель атаки. Управляется флагом AETHER_DEEP_ANALYSIS=1 (включён по умолчанию); в случае сбоя возвращается к одноразовому подходу.
Перед анализом ошибок Aether определяет, какой тип протокола реализует контракт, и загружает контрольные списки уязвимостей, специфичных для архетипа:
Всего 10 архетипов, каждый с 3-7 специфическими элементами контрольного списка, основанными на реальных эксплойтах.
Структурированная база данных из 50+ категоризированных реальных паттернов эксплойтов заменила предыдущий статический список из 10 паттернов:
Каждый паттерн включает индикаторы кода, отсутствующие меры защиты, пошаговый механизм эксплойта и реальные прецеденты (с указанием сумм в долларах). Паттерны фильтруются по обнаруженному архетипу и фокусу агента.
Автоматически извлекает инварианты протокола из трёх источников:
@invariant в комментариях контрактаГенерирует наборы тестов Foundry invariant_*(), которые служат облегчёнными доказательствами формальной верификации — неудачный инвариантный тест доказывает, что ошибка реальна.
division_by_zero, integer_underflow и т.д. до низкого. Теперь проверяет, находится ли находка в блоке unchecked{}, рядом с переводами стоимости, в расчётах цены или в контексте оракула, перед принятием решения"pending" теперь передаются на анализ LLM (ранее проходили только "validated", что приводило к молчаливому отбрасыванию многих реальных находок)(line // 10) * 10, которое разделяло находки, расположенные в 2 строках друг от друга, в разные группыDeFiVulnerabilityDetector (двухэтапный анализ наличия/отсутствия) теперь работает в основном улучшенном движке аудита, а не только в пайплайне потоковой обработкиПолностью встроенный текстовый TUI — Aether v3.0 представляет собой постоянное полноэкранное приложение, которое никогда не переключается на сырой терминал. Каждая операция — аудит, генерация PoC, генерация отчёта, выбор области из GitHub, настройка конфигурации — выполняется полностью внутри TUI:
app.suspend() — TUI никогда не исчезает, нет резких переключений терминалаEnter на любом задании, чтобы увидеть прокручиваемый вывод в реальном времени, индикатор прогресса фазы и метаданныеa/n для всех/ни одного, ввод для фильтрации, цветовая кодировка ранее проверенных контрактовn Новый аудит, r Продолжить, h История, PoCs, Отчёты, Загрузить, Настройки, ВыходЧетыре типа фоновых заданий: Все тяжелые операции выполняются как фоновые потоки-демоны через AuditRunner, вывод захватывается ThreadDemuxWriter и виден в JobDetailScreen:
| Тип задания | Описание |
|---|---|
local | Аудит одного или нескольких контрактов параллельно |
github |
Поддержка трёх провайдеров 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: Паттерны из 128 критических/высоких находок из 77 аудитов, адаптированные для 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 — Новый аудитМногоэтапный мастер с тремя типами источников:
Локальный файл или каталог:
URL GitHub:
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 передается в глубокий анализ и распространение зараженияRelatedContractResolver для контекста зависимостейHalmosRunner + HalmosPropertyGenerator для формальной верификации инвариантов; интегрировано на этапе валидации 1.95; корректная деградация, если Halmos не установленAccuracyTracker записывает результаты отправки и генерирует веса уверенности для каждого детектора; калибровка серьезности на основе исторических данных внедряется в глубокий анализ./output/ — Корень общего вывода./output/reports/ — Сгенерированные отчеты./output/pocs/ — Сгенерированные наборы PoC Foundry./output/exploit_tests/ — Результаты тестирования эксплойтовaether.py — Единственная точка входа; запускает Textual TUIcli/interactive_menu.py — Тонкая прослойка, создающая JobManager + AetherAppcli/tui/app.py — AetherApp(App) — основное приложение Textual с привязками клавиш и таймером обновления в 1 секундуcli/tui/)MainScreen (таблица задач + панель стоимости), JobDetailScreen (живой лог + фаза + метаданные), NewAuditScreen, HistoryScreen, ResumeScreen, PoCScreen, ReportsScreen, FetchScreen, SettingsScreenJobsTable (DataTable, опрашивающая JobManager), CostBar (стоимость сессии по провайдерам), LogViewer (RichLog с инкрементальным обновлением), PhaseBar (прогресс в юникод-блоках)ConfirmDialog, , , , , — все подклассы ModalScreencli/audit_runner.py — Класс AuditRunner, запускающий аудиты, PoC, отчеты и аудиты GitHub в фоновых потокахcore/job_manager.py — Синглтон JobManager: реестр задач сессии (QUEUED/RUNNING/COMPLETED/FAILED/CANCELLED)core/audit_progress.py — ContractAuditStatus с буферами логов для каждой задачи, ThreadDemuxWriter для захвата stdout/stderrcore/llm_usage_tracker.py — Потокобезопасный синглтон с snapshot() для дельты стоимости каждой задачиcli/main.py — Класс AetherCLI (~2600 строк) — внутренний оркестратор аудита, используемый AuditRunnercore/enhanced_audit_engine.py — Основной движок аудита с интеграцией глубокого анализаcore/post_audit_summary.py — Панель послеаудита с разбивкой стоимости по провайдерамcore/deep_analysis_engine.py — Конвейер LLM из 6 проходов плюс Pass 3.5 (межконтрактный): понимание → поверхность атаки → инварианты → межконтрактный → межфункциональный → противник → граничные случаи; выбор уровня модели, кеширование, примеры с несколькими примерами, принудительная цепочка мыслей, контекст CFG в Pass 2, калибровка серьезности на основе ML в Pass 5, контекст связанных контрактов для каждого проходаcore/protocol_archetypes.py — Обнаружение прототипов протоколов (14 типов, включая LIQUID_STAKING, PERPETUAL_DEX, CDP_STABLECOIN, YIELD_AGGREGATOR) с контрольными списками уязвимостей для каждого прототипаcore/exploit_knowledge_base.py — 75+ категоризированных реальных шаблонов эксплойтов в 14 категориях (включая CROSS_CONTRACT, SIGNATURE_AUTH, TOKEN_INTEGRATION, PROXY_UPGRADE, TYPE_SAFETY)core/invariant_engine.py — Извлечение инвариантов (NatSpec + LLM + шаблоны) и генерация тестов инвариантов Foundry + генерация свойств Halmoscore/solidity_ast.py — Разбор AST Solidity через py-solc-x с откатом на регулярные выражения для наследования, видимости, размещения хранилища, отслеживания чтения/записи состояния; построение графа потока управления (build_cfg(), get_dominators(), get_loop_headers())core/taint_analyzer.py — Анализ потока данных / заражения с 8 типами источников, 12 типами приемников, обнаружением очистителей, межконтрактным отслеживанием, распространением CFG с учетом ветвлений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 — Детекторы, вдохновленные Movecore/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/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 и поддержкой fork-режимаcore/llm_foundry_generator.py — Генерация тестов на основе LLM с документацией mock API и рекомендуемыми шаблонами setUpcore/enhanced_foundry_integration.py — Валидация и форматирование Foundrycore/poc_templates.py — Шаблоны mock-контрактов (MockERC20, MockOracle, MockWETH, MockFlashLoanProvider)core/poc_setup_generator.py — Интеллектуальная генерация setUp(): извлечение параметров конструктора, развертывание mock, обработка обновляемых контрактов, создание и одобрение токенов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 секунды:```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
## Troubleshooting
- **Foundry not found** — Убедитесь, что `forge`/`anvil` установлены и находятся в `PATH` (`foundryup` и `export PATH="$PATH:$HOME/.foundry/bin"`)
- **solc not found** — Установите `solc-select` и требуемые версии: `solc-select install 0.8.20 latest`
- **LLM features not working** — Проверьте, что ключи API заданы. Некоторые модели могут быть недоступны в вашей учётной записи/регионе; система автоматически переключается на запасные
- **Database not found** — Для отчётов GitHub убедитесь, что workflow аудита был запущен предварительно
- **Textual not loading** — Выполните `pip install textual>=1.0.0`, если отсутствует
---
## Changelog
### v4.7 — PoC Auto-Execution, Halmos Symbolic Verification, CFG Analysis & ML Feedback Loop
- **PoC auto-execution** — сгенерированные PoC Foundry автоматически компилируются и выполняются через `forge test --json` с разбором `PoCTestResult` и поддержкой fork-mode; фаза `POC_TESTING` для отслеживания в живом TUI
- **Halmos symbolic execution** — `HalmosRunner`, `HalmosPropertyGenerator` и `HalmosSymbolicNode` как узлы конвейера (этап валидации 1.95) для формальной верификации инвариантов; корректное ухудшение при отсутствии Halmos
- **Control flow graph analysis** — `BasicBlock`, `CFGEdge`, `ControlFlowGraph` с `build_cfg()`, деревьями доминаторов, обнаружением заголовков циклов, разбором блоков ассемблера; контекст CFG внедряется в глубокий анализ Pass 2; распространение меток с учётом ветвления
- **ML feedback loop** — `AccuracyTracker` записывает результаты отправки с `get_detector_accuracy()` и `get_detector_weights()` для статистики по детекторам; корректировка весов уверенности в `EnhancedVulnerabilityDetector`; калибровка серьёзности в глубоком анализе Pass 5
- **Related contract context** — `RelatedContractResolver` обнаруживает контракты-родители, интерфейсы, библиотеки и зависимости с бюджетом на проход (200K/100K/50K символов); обобщение стандартных библиотек; обнаружение родственных контрактов в одном файле
- **Tech debt cleanup** — удалено 8 500 строк мёртвого кода: удалены `ai_ensemble.py`, `audit_engine.py`, `fork_verifier.py`; удалены все ссылки на ai_ensemble из CLI, средств аудита, экранов TUI, генератора отчётов
- **2059 тестов** проходят в 76 тестовых файлах
### v4.0 — Solidity AST Parsing, Taint Analysis & Data Flow Tracking
- **Solidity AST parser** — полная интеграция solc через py-solc-x для корректного разрешения наследования, видимости функций, расположения хранилища, отслеживания чтения/записи состояния; корректный запасной вариант с регулярными выражениями
- **Taint analysis engine** — отслеживает управляемые пользователем входные данные через 8 типов источников до 12 опасных стоков с обнаружением санитайзеров и межконтрактным отслеживанием
- **Pipeline integration** — данные AST передаются в Pass 1, данные taint — в Pass 2, этап валидации с учётом taint 1.85
- **1839 тестов** проходят в 67 тестовых файлах (~23 секунды)
### v3.8 — Enhanced Detection & PoC Generation
- **Cross-contract analysis** — новый Pass 3.5 с анализатором межконтрактных отношений, обнаружением границ доверия, группировкой union-find
- **Token quirks database** — 12 категорий нестандартного поведения ERC-20 (fee-on-transfer, rebasing, ERC-777 и т.д.)
- **Enhanced precision engine** — обнаружение инфляции доли, анализ направления округления, отслеживание усечения при делении, эксплуатация остатков, переполнение аккумулятора
- **Runnable PoC generation** — библиотека mock-контрактов (ERC20, Oracle, WETH, FlashLoan), интеллектуальная setUp(), максимальное количество попыток компиляции 3→5
- **Few-shot examples** в глубоком анализе Passes 3, 4, 5 с реальными примерами уязвимостей и ложных срабатываний
- **Severity calibration** — конкретные пороговые значения (Critical >$1M, High >$100K, Medium >$10K, Low теоретический)
- **Chain-of-thought enforcement** — обязательные 5 шагов рассуждения перед выводом JSON
- **AI ensemble retired** — заменён на ротацию нескольких провайдеров в проходах глубокого анализа
- **Multi-provider rotation** — Gemini Flash (дешёвые проходы), Anthropic Claude (рассуждение), OpenAI GPT (разнообразие)
- **1682 теста** проходят
### v3.7 — Expanded Archetypes & Exploit Patterns
- **4 новых протокольных архетипа** — LIQUID_STAKING, PERPETUAL_DEX, CDP_STABLECOIN, YIELD_AGGREGATOR (всего 10→14)
- **25 новых шаблонов эксплойтов** — категории CROSS_CONTRACT, SIGNATURE_AUTH, TOKEN_INTEGRATION, PROXY_UPGRADE, TYPE_SAFETY (всего 50→75)
- **Improved contract scanner** — теперь оцениваются абстракты, скорректированы пороговые значения для поддержки монорепозиториев
- **1528 тестов** проходят
### v3.5.2 — False Positive Reduction
- **Script detection in contract discovery** — файлы в `script/`/`scripts/`, файлы `.s.sol` и контракты, импортирующие `forge-std/Script.sol` или наследующие `is Script`, помечаются как скрипты развёртывания и исключаются из анализа уязвимостей LLM. Устраняет целый класс ложных срабатываний от хелперов развёртывания Foundry, анализируемых как производственный код
- **File context markers in LLM prompts** — объединённое содержимое теперь включает маркеры `// FILE: <name>` для каждого файла, а проходы глубокого анализа 1 и 3 получают заголовок `## Project Files`, помечающий каждый файл как `[PRODUCTION]` или `[DEPLOYMENT SCRIPT]`, чтобы LLM фокусировались на правильном коде
- **Dynamic modifier detection** — `GovernanceDetector` теперь извлекает определённые в контракте модификаторы контроля доступа (например, `onlyDistributor`, `onlyMinter`, `authorized`) путём сканирования определений модификаторов с префиксом `only` или проверками `msg.sender`. Они объединяются с жёстко заданным списком модификаторов для `has_access_control()` и `is_governance_function()`
- **Function-scope deduplication** — `VulnerabilityDeduplicator` теперь группирует находки по `(function_name, vuln_type)`, когда доступен код контракта, заменяя хрупкое точное совпадение строк, которое пропускало дубликаты в смежных строках одной функции. При отсутствии контекста функции используется резервный метод группировки по корзинам из 20 строк
- **Widened AI ensemble line tolerance** — допуск `_findings_match_fuzzy()` увеличен с ±5 до ±15 строк для обнаружения дубликатов одной функции от разных агентов
- **Atomic constructor false positive pattern** — `_check_constructor_context()` теперь обнаруживает, когда контракт развёртывается (`new`/`Create2`) и инициализируется (`.initialize()`) в одном конструкторе, помечая проблемы с front-running как ложные срабатывания, поскольку операции атомарны
- **LLM validation pattern #18** — добавлен «Атомарное развёртывание + инициализация» в 18-пунктовый чеклист ложных срабатываний в подсказке валидации LLM
- **1489 тестов** проходят в 56 тестовых файлах (~40 секунд), по сравнению с 1461
### v3.5 — Deep Analysis Engine
- **6-pass deep analysis pipeline** — заменяет однократные вызовы LLM структурированным многопроходным рассуждением: Понимание протокола → Карта атак → Анализ нарушения инвариантов → Межфункциональное взаимодействие → Моделирование противника → Граничные случаи. Каждый проход получает накопленный контекст от предыдущих. Проходы 1-2 кэшируются по хешу содержимого для быстрых повторных аудитов
- **Protocol archetype detection** — автоматически определяет тип протокола (ERC-4626 Vault, Lending Pool, DEX/AMM, Bridge, Staking, Governance, Oracle, NFT Marketplace, Token, Orderbook) с чеклистами уязвимостей для каждого архетипа, основанными на реальных эксплойтах
- **Exploit knowledge base** — 50+ категоризированных шаблонов эксплойтов по 9 категориям (Inflation/Share, Reentrancy, Oracle, Governance, Bridge, Precision/Rounding, Access Control, Economic/DeFi, Logic), заменяющих статический список из 10 шаблонов. Каждый шаблон включает индикаторы кода, отсутствующие защиты, пошаговый механизм эксплойта, реальные прецеденты с суммами ущерба и применимость к архетипам
- **Invariant engine** — извлекает инварианты протокола из тегов NatSpec `@invariant`, анализа LLM и 6 детекторов общих шаблонов (сохранение хранилищ, отслеживание баланса, учёт поставок, постоянный продукт AMM, обеспечение кредитования, вознаграждения за стейкинг). Генерирует тестовые наборы Foundry `invariant_*()` как доказательства формальной верификации
- **Context-aware severity calibration** — заменяет общее снижение серьёзности проверками контекста риска. Находки в блоках `unchecked{}`, рядом с передачами стоимости (`call{value:}`, `_mint`, `safeTransfer`), в расчётах цен или контексте оракулов сохраняют исходную серьёзность
- **Validation gate fix** — находки со статусом `"pending"` теперь проходят к анализу LLM с флагом `needs_llm_validation`. Отбрасываются только находки с явным статусом `"false_positive"` (ранее все находки, кроме `"validated"`, молча фильтровались)
- **Specialist-aware confidence penalty** — находки от одного агента, соответствующие его специализации (например, AnthropicReasoningSpecialist + экономические атаки), получают штраф -0.05; находки от неспециалистов сохраняют штраф -0.15
- **Line-bucket dedup fix** — удалена группировка `(line // 10) * 10`, которая вызывала произвольные проблемы на границах (строки 9 и 11 попадают в разные корзины). Дедупликация теперь использует только нормализованный тип уязвимости, а `_findings_match_fuzzy()` обрабатывает близость строк
- **DeFi detector integration** — `DeFiVulnerabilityDetector` (двухэтапный семантический анализ наличия/отсутствия) теперь работает в расширенном механизме аудита наряду с `EnhancedVulnerabilityDetector`
- **Dynamic exploit patterns in prompts** — `enhanced_prompts.py` теперь загружает шаблоны из ExploitKnowledgeBase, отфильтрованные по области фокуса, с запасным вариантом к статическим шаблонам
- **1461 тест** проходят в 55 тестовых файлах (~50 секунд)
### v3.2 — Job Stats & UI Fixes
- **Fixed job findings/cost/LLM stats always showing zero** — рабочий процесс аудита теперь захватывает словарь результатов из `run_audit()` для извлечения количества находок; удалён `LLMUsageTracker.reset()`, который приводил к потере ссылок на синглтон; все 4 типа рабочих процессов вычисляют статистику для задания по дельтам снимков
- **Fixed UI repaint artifact on window switch** — заменены прокручиваемые контейнеры на простой `Container` с `overflow: hidden` в JobDetailScreen для предотвращения устаревших кадров композитора
- **Moved "Job Details" to border_title** для более чистого отображения панели метаданных
- Удалён `CLAUDE.md` из отслеживания git
### v3.0 — Fully Inline Textual TUI
- **Zero `app.suspend()` calls** — TUI никогда не переходит в сырой терминал; каждая операция выполняется в строке
- **Background PoC generation** — запускается как поток-демон через `AuditRunner.start_poc_generation()` с живым выводом в JobDetailScreen
- **Background report generation** — запускается как поток-демон через `AuditRunner.start_report_generation()` с живым выводом
- **Background GitHub audits** — выбор области через диалоги Textual, аудит запускается как поток-демон через `AuditRunner.start_github_audit()`
- **ContractSelectorDialog** — почти полноэкранный фильтруемый модальный выбор множественных элементов, заменяющий основанный на curses `ScopeManager.interactive_select()`. Space для переключения, `a`/`n` для всех/ни одного, ввод для фильтрации, цветная маркировка ранее проверенных контрактов
- **GitHubAuditHelper** — разложенная обёртка вокруг `GitHubAuditor`/`AetherDatabase`, предоставляющая атомарные операции (`clone_and_discover`, `get_scope_state`, `save_new_scope`, `get_pending_contracts`, `handle_reaudit`), вызываемые из экранов Textual
- **Inline settings** — настройка ключей API и моделей через родные TextInputDialog/SelectDialog, без внешнего мастера настройки
- **Inline GitHub scope management** — продолжить, повторно проверить или создать новую область через SelectDialog; выбор контрактов через ContractSelectorDialog
- **6 экранов переписаны** — PoCScreen, ReportsScreen, SettingsScreen, NewAuditScreen, HistoryScreen, ResumeScreen — все полностью встроены
- **770 тестов** проходят в 50 тестовых файлах
### v2.2 — Textual TUI Dashboard
- Полноэкранный TUI на Textual с постоянным приложением, горячими клавишами и таймером обновления 1 секунда
- MainScreen с живой таблицей заданий и строкой стоимости сессии
- JobDetailScreen с живым просмотром логов, индикатором выполнения фаз и метаданными
- Модальные диалоги (подтверждение, ввод текста, выбор, чекбокс, выбор пути) заменяют подсказки questionary
- Фоновое выполнение аудита через AuditRunner с захватом вывода ThreadDemuxWriter
- Синглтон JobManager для реестра заданий сессии
- Отслеживание стоимости задания через снимки LLMUsageTracker
### v2.1 — Parallel Audits, Slither Removal & Test Cleanup
- Параллельный механизм аудита — одновременное выполнение нескольких контрактов с `ThreadPoolExecutor`, до 8 параллельных рабочих процессов
- Потокобезопасное отслеживание прогресса — `ContractAuditStatus` с блокировками, `ThreadDemuxWriter` для мультиплексирования stdout
- Постаудитный отчёт — консолидированное представление результатов после завершения параллельных аудитов
- Отслеживание использования LLM — учёт токенов, затрат и вызовов API для всех трёх провайдеров
- Slither полностью удалён — удалены все зависимости, интеграционный код и тесты (~1200 строк); детекторы на основе шаблонов + ABI Foundry + регулярные выражения являются единственными инструментами анализа
- Очистка тестового набора — удалено более 40 старых/медленных/интеграционных тестовых файлов
### v2.0 — Interactive Menu TUI
- Интерактивный меню-ориентированный TUI в качестве основного интерфейса
- Мастер аудита с выбором источника, флажками функций и подтверждением
- Возможность возобновления незавершённых аудитов GitHub
- Единый браузер истории аудитов для локальных и GitHub-баз данных
- Встроенная генерация PoC и рабочие процессы отчётов из меню
- Получение контрактов из нескольких цепочек с опциональным немедленным аудитом
- Управление настройками из меню
- Запуск/возврат консоли из меню
### v1.5 — Three-Provider LLM Support & Enhanced Analysis
- Интеграция Anthropic Claude (Sonnet 4.5, Opus 4.6, Haiku 4.5) в качестве третьего провайдера LLM
- Ансамбль ИИ из 6 агентов: 2 OpenAI + 2 Gemini + 2 Anthropic специалиста
- Автоматическое переключение между провайдерами для максимальной доступности
- Обновлённые модели OpenAI (GPT-5.3) и Google Gemini (3.0 Flash/Pro)
- Мастер настройки обновлён с конфигурацией ключа API Anthropic и выбором модели
- Исправлена сломанная команда CLI generate-foundry
---
## License
Aether распространяется под лицензией **MIT License**. Подробнее см. в файле [LICENSE](https://github.com/l33tdawg/aether/blob/HEAD/LICENSE).
## Author
**Dhillon Andrew Kannabhiran** (@l33tdawg)
- Email: [email protected]
- Twitter: [@l33tdawg](https://twitter.com/l33tdawg)
- GitHub: [@l33tdawg](https://github.com/l33tdawg)
## Contributing
Вклад приветствуется! Не стесняйтесь отправлять issues, форкать репозиторий и создавать pull request'ы.
| Категория | Серьёзность | Примеры токенов |
|---|
| Комиссия при передаче | ВЫСОКИЙ | 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 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-ликвидность, каскад безнадёжных долгов, бомба возвращаемых данных, повтор передачи подписи |
| Логика | 6 | Ошибка на единицу, отсутствие дедлайна/проскальзывания, непроверенные возвраты, учёт самопередачи |
pofsq| Аудит репозитория GitHub с предварительно выбранной областью |
poc | Генерация proof-of-concept для Foundry |
report | Генерация аудиторского отчёта (markdown/json/html) |
RelatedContractResolver обнаруживает родительские, интерфейсные, библиотечные контракты и зависимости; система бюджета для каждого прохода с суммаризацией стандартных библиотекforge test --json с поддержкой fork-режимаTextInputDialogSelectDialogCheckboxDialogPathDialogContractSelectorDialogGitHubAuditHelper — декомпозированные операции аудита GitHub для интеграции с TUItheme.tcss — Textual CSS в голубых тонахcore/cross_contract_analyzer.py — Анализ межконтрактных отношений с обнаружением границ доверия, группировкой union-find и RelatedContractResolver для контекста зависимостейcore/token_quirks.py — База данных особенностей токенов (12 категорий нестандартного поведения ERC-20)core/halmos_runner.py — Исполнитель символического выполнения Halmos для формальной верификацииcore/halmos_property_generator.py — Автоматическая генерация свойств верификации Halmos из инвариантовcore/accuracy_tracker.py — Цикл обратной связи ML: отслеживание точности каждого детектора, настройка весов уверенности, калибровка серьезностиcore/input_validation_detector.pycore/data_decoding_analyzer.pycore/token_quirks.py