
Оценочная платформа для AI-агентов пентестинга, которая измеряет подтверждённое обнаружение уязвимостей с помощью семантического сопоставления на основе LLM, двудольного разрешения и кумулятивного анализа по реальным целям.
ИИ-агенты пентеста становятся всё более убедительными в роли наступательных систем безопасности, однако современные бенчмарки по-прежнему дают ограниченное представление о том, какие системы покажут наилучшие результаты на реальных целях. Большинство существующих оценок проверяют и оптимизируют заранее заданные цели, такие как захват флагов, удалённое выполнение кода, воспроизведение эксплойтов или схожесть траекторий, в упрощённых или узких условиях. Эти бенчмарки ценны для измерения ограниченных возможностей, но они не в полной мере отражают сложность, открытое исследование и стратегическое принятие решений, необходимые в реалистичном пентесте. Мы представляем практическую систему оценки, которая смещает акцент с выполнения задач на подтверждённое обнаружение уязвимостей, позволяя проводить оценку на достаточно сложных целях, охватывающих множество поверхностей атаки и классов уязвимостей. Система сочетает структурированные эталонные данные (ground truth) с семантическим сопоставлением на основе LLM для выявления уязвимостей, разрешение на основе двудольных графов для оценки находок в условиях реалистичной неоднозначности, непрерывное сопровождение эталонных данных, повторную и кумулятивную оценку стохастических агентов, метрики эффективности и выбор сокращённого набора тестов для устойчивого экспериментирования. Эта методология расширяет современный уровень техники, обеспечивая более реалистичное и операционно значимое сравнение ИИ-агентов пентеста. Для обеспечения воспроизводимости мы дополнительно публикуем эталонные данные с разметкой экспертов и код для предложенного протокола оценки.
Конвейер оценки для инструментов тестирования безопасности. Сравнивает находки инструментов с эталонными наборами данных с помощью сопоставления на основе LLM и вычисляет метрики precision, recall, F1 и F0.5.
poetry install
Требуются Python 3.11+ и установленный Poetry.
# 1. Set your LLM API key
export OPENAI_API_KEY="..."
# 2. Run evaluation
ethibench evaluate ./my_experiment --dataset path/to/dataset.yaml
# 3. View results
cat ./my_experiment/evaluation_outputs/summary.md
ethibench evaluateЗапускает полный конвейер оценки для каталога эксперимента.
ethibench evaluate <experiment_dir> --dataset <dataset.yaml> [options]
# Batch: evaluate all experiments in a folder
ethibench evaluate --parent-dir final_experiments/ --dataset <dataset.yaml>
# Force re-evaluation (ignore cached artifacts)
ethibench evaluate <experiment_dir> --dataset <dataset.yaml> --force
Аргументы:
experiment_dir — (необязательно) Каталог, содержащий подкаталоги целей (или подкаталоги run_*, каждый из которых содержит подкаталоги целей). Можно не указывать при использовании --parent-dir.Опции:
--dataset, -d — (обязательно) Путь к YAML-файлу набора данных.--gt-dir, -g — Каталог эталонных данных. По умолчанию — gt/ рядом с YAML-файлом набора данных.--output-dir, -o — Каталог вывода. По умолчанию — evaluation_outputs/ внутри каталога эксперимента. Игнорируется в пакетном режиме.--replicates, -n — Количество повторов LLM-сопоставления (по умолчанию: 1).--force, -f — Повторно выполнить все шаги, игнорируя кэшированные артефакты. По умолчанию повторно используются существующие промежуточные результаты (сырые сопоставления, двудольные сопоставления, метрики).--parent-dir, -p — Родительский каталог, содержащий несколько каталогов экспериментов для пакетной оценки. Все непосредственные подкаталоги рассматриваются как эксперименты.Что он делает:
target_id), загружает каждый findings.jsonl, присваивает subset_name из YAML-файла набора данных.metrics.json для каждой цели, если он присутствует, агрегирует стоимость/токены/длительность.evaluation_outputs/plots/.evaluation_outputs/summary.md.ethibench analyzeЗапускает инструменты анализа на существующих результатах оценки.
ethibench analyze <experiment_dir> --dataset <dataset.yaml> [options]
# Batch: analyze all experiments and produce aggregated results
ethibench analyze --parent-dir final_experiments/ --dataset <dataset.yaml>
Аргументы:
experiment_dir — (необязательно) Каталог эксперимента для анализа. Можно не указывать при использовании --parent-dir.Опции:
--dataset, -d — (обязательно) Путь к YAML-файлу набора данных.--gt-dir, -g — Каталог эталонных данных. По умолчанию — gt/ рядом с YAML-файлом набора данных.--output-dir, -o — Каталог результатов оценки. По умолчанию — evaluation_outputs/ внутри каталога эксперимента.--parent-dir, -p — Родительский каталог, содержащий несколько каталогов экспериментов для пакетного анализа. Создаёт анализ по каждому эксперименту и агрегированные результаты.Результаты по каждому эксперименту (evaluation_outputs/analysis/):
duplicates.json — находки, сопоставленные при сыром сопоставлении, но удалённые двудольной оптимизацией.unmatched.json — находки без соответствия эталонным данным (ложные срабатывания).statistics.json — статистика покрытия GT, распределение находок по каждой записи GT.Агрегированные результаты (только с --parent-dir, в <parent-dir>/aggregated_analysis/):
all_duplicates.jsonl — все дублирующиеся находки во всех экспериментах (JSONL, полные объекты находок с полем experiment).all_false_positives.jsonl — все несопоставленные/ложноположительные находки во всех экспериментах (формат JSONL).gt_statistics_avg.json — усреднённое покрытие GT по каждому поднабору, а также сводка покрытия по каждому эксперименту.ethibench compareСравнивает результаты оценки нескольких экспериментов, создавая диаграммы «бок о бок» и сводный отчёт. Каждый эксперимент уже должен иметь результаты оценки (сначала выполните ethibench evaluate). Метками всегда служат имена каталогов.
# Explicit experiment directories
ethibench compare exp-gpt4o/ exp-claude/ --output-dir comparison/
# Auto-discover all experiments under a parent folder
ethibench compare --parent-dir all-experiments/ --output-dir comparison/
# Mix: explicit dirs + auto-discovery
ethibench compare exp-extra/ --parent-dir all-experiments/ --output-dir comparison/
Аргументы:
experiment_dirs — (необязательно) Один или несколько каталогов экспериментов для явного включения.Опции:
--output-dir, -o — (обязательно) Каталог вывода для результатов сравнения.--parent-dir, -p — Родительский каталог для автоматического обнаружения экспериментов. Включаются все непосредственные подкаталоги, содержащие папку evaluation_outputs/, отсортированные по алфавиту. Можно комбинировать с явно указанными experiment_dirs.Результаты (в --output-dir):
comparison.json — необработанные данные сравнения для всех экспериментов.plots/ — PNG-диаграммы «бок о бок».comparison.md — сводка в формате Markdown.pairwise_comparison.md — попарное статистическое сравнение A/B (4 лучших эксперимента по F1).pairwise_comparison.tex — версия попарной таблицы в формате LaTeX.cumulative-analysis/ — (если существуют кумулятивные данные) дельта-анализ, сравнивающий усреднённый и кумулятивный F1, а также диаграммы кумулятивного сравнения.