Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
cve-bench — Бенчмарк для оценки AI-агентов по исправлению реальных уязвимостей безопасности. | Kitploit
Инструменты/GitHubGitHub/giovannigatti/cve-bench
Статический анализДинамический анализ (песочница)Анализ уязвимостейАнализ КодаТестирование на ПроникновениеDevSecOpsМашинное ОбучениеОбучение и ОбразованиеБезопасность ИИ
GitHubgiovannigatti/cve-bench

cve-bench

Бенчмарк для оценки AI-агентов по исправлению реальных уязвимостей безопасности.

142 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий

CVE-Bench

Blog Harness Coverage

Эталон для оценки LLM-агентов на исправление реальных уязвимостей безопасности. Агенты запускаются внутри изолированных Docker-контейнеров и оцениваются по тестовому набору безопасности мейнтейнера.


Требования

  • Python 3.12+
  • Docker
  • OPENAI_API_KEY, ANTHROPIC_API_KEY и/или POOLSIDE_API_KEY в вашем окружении (или файл .env)

Установка зависимостей:

root@kitploit:~
pip install poetry
poetry install

Структура задачи

Каждая задача находится в tasks/{CVE-ID}/ и содержит:

root@kitploit:~
tasks/CVE-2026-33175/
├── meta.json           # GHSA ID, CWE, CVSS, repo URL, vulnerable and fixed SHAs
├── setup.sh            # Clones repo, checks out the vulnerable SHA, installs dependencies
├── run_tests.sh        # Injects test_security.py into the repo and runs pytest
├── test_security.py    # Security tests (xfail on vulnerable code, pass on the fix)
├── advisory.md         # Full GHSA advisory (richest prompt)
├── diagnose.md         # Behavioural description only — no file or function names
├── locate.md           # File and function only — no description of the flaw
└── Dockerfile          # Optional; only present when the task needs extra system deps

Пример meta.json:

root@kitploit:~
{
  "ghsa_id": "GHSA-xxxx-xxxx-xxxx",
  "cwe": ["CWE-287"],
  "cvss": 9.1,
  "repo": {
    "url": "https://github.com/org/project",
    "vulnerable_sha": "abc123^",
    "fixed_sha": "abc123"
  }
}

setup.sh идемпотентен и безопасен для повторного запуска. test_security.py скрыт от агента во время выполнения и внедряется только после завершения работы агента.


Сборка Docker-образов

root@kitploit:~
python build.py

Эта команда собирает:

  1. Общий базовый образ (cve-bench/base) — Python 3.12, git, poetry и harness.
  2. По одному образу задачи на каждую задачу (cve-bench/{task-id}) — расширяет базовый образ, копирует директорию задачи и запускает setup.sh.

Опции:

root@kitploit:~
# Сборка только определённых задач
python build.py --task CVE-2026-33175 CVE-2026-42561

# Пропустить пересборку базового образа
python build.py --skip-base

Образы задач собираются параллельно (до 5 рабочих процессов). Если директория задачи содержит Dockerfile, он используется вместо стандартного docker/task.Dockerfile.


Проверка задач

Перед запуском эталона убедитесь, что тесты безопасности каждой задачи правильно различают уязвимый и исправленный код:

root@kitploit:~
python validate.py

Для каждой задачи выполняются три фазы внутри контейнера задачи:

ФазаЧто проверяется
уязвимаяТесты безопасности должны завершиться неудачей (или xfail) на уязвимой SHA
исправленнаяТесты безопасности должны пройти на исправленной SHA
регрессияНе-безопасностные тесты должны пройти на исправленной SHA

Результаты отображаются в виде таблицы в реальном времени. Код выхода 1, если хотя бы одна задача не проходит какую-либо фазу.

root@kitploit:~
# Проверка только определённых задач
python validate.py --task CVE-2026-33175 GHSA-r758-8hxw-4845

# Пропустить пересборку образов перед проверкой
python validate.py --skip-build

Запуск эталона

root@kitploit:~
python benchmark.py --model openai:gpt-5.5 poolside:laguna-m.1 --prompt-type advisory

Опции:

Поддерживаемые провайдеры:

Каждый запуск создаёт JSON-файл с результатами в results/:

root@kitploit:~
results/{task-id}__{provider}:{model}__{prompt-type}.json

Существующие файлы результатов автоматически пропускаются. Запуски выполняются параллельно по задачам (до 20 рабочих процессов) с ограничением скорости на провайдера (один активный запрос на провайдера в момент времени) для избежания ошибок 429.


Формат результата

Каждый файл результата — это JSON-объект следующей структуры:

root@kitploit:~
{
  "cve_id": "CVE-2026-33175",
  "model_id": "openai:gpt-5.5",
  "prompt_type": "advisory",
  "timestamp": "2026-05-01T12:00:00",
  "model_duration_s": 142.3,
  "test_duration_s": 8.1,
  "turns": [
    {
      "tool_calls_and_results": [...],
      "input_tokens": 12400,
      "output_tokens": 310
    }
  ],
  "tests": [
    {
      "kind": "security",
      "name": "test_email_verified",
      "outcome": "passed"
    }
  ]
}

tests[].kind может быть "security" (из test_security.py) или "regression" (из собственного набора тестов проекта). Запуск считается решённым, только если все тесты безопасности пройдены и ни один регрессионный тест не провален.


Генерация графиков

root@kitploit:~
python generate_charts.py

Читает все файлы результатов из results/ и записывает SVG-графики в docs/images/charts/. Требуется Chrome/Chromium для экспорта Bokeh без отображения (через chromedriver-binary).


Архитектура harness

Harness запускается внутри каждого Docker-контейнера как python -m harness.run. Он отвечает за загрузку промпта, выполнение агентного цикла и запись файла результата.

root@kitploit:~
src/harness/
├── run.py                  # Точка входа; разбирает аргументы, подключает компоненты, вызывает BenchmarkRunner
├── client/
│   ├── factory.py          # Разбирает `provider:model-id`, возвращает соответствующий LLMClient
│   ├── _client.py          # Абстрактный LLMClient, датаклассы ToolCall и LLMTurn
│   ├── anthropic.py        # Интеграция с Anthropic SDK
│   └── oai.py              # Интеграция с OpenAI SDK (также используется для Poolside)
├── agent/
│   ├── core.py             # Агентский цикл: вызов клиента, диспетчеризация вызовов инструментов, организация сообщений
│   └── runner.py           # Обёртка над Agent, отслеживание времени и списка витков
├── bench/
│   ├── runner.py           # Оркестрация: настройка → агент → тесты безопасности → регрессионные тесты
│   ├── result.py           # Даталклассы BenchmarkResult и TestResult, JSON-сериализация
│   └── repository.py       # Запись файлов результатов на диск
└── task/
    ├── tools.py             # Реализации инструментов: ListFiles, ReadFile, SearchInFiles,
    │                        #   EditFile, CreateFile, DeleteFile, RunPytest
    └── prompt_loader.py     # Чтение advisory.md / diagnose.md / locate.md

Инструменты агента:

Все инструменты проверяют пути относительно корня репозитория для предотвращения выхода за его пределы. Агент не имеет доступа к test_security.py или к истории git.

Агентный цикл выполняется не более 20 витков. Если достигнут лимит, запуск записывается как есть, и тесты безопасности всё равно выполняются над тем состоянием репозитория, которое оставил агент.


Добавление задачи

  1. Создайте tasks/{CVE-ID}/ и добавьте meta.json, setup.sh, run_tests.sh, test_security.py, advisory.md, diagnose.md, locate.md.
  2. Сделайте setup.sh и run_tests.sh исполняемыми (chmod +x).
  3. Проверка: python validate.py --task {CVE-ID}.
  4. Сборка: python build.py --task {CVE-ID}.

Раскрытие информации

Эта работа была проведена как независимое исследование. На момент проведения исследования и подготовки этого репозитория у меня не было институциональной принадлежности.


Цитирование этой работы

root@kitploit:~
@misc{gattipinheiro2026cvebench,
  author       = {Gatti Pinheiro, Giovanni},
  title        = {{CVE-Bench}: Benchmarking {LLM} Agents on Real-World Security Vulnerability Fixes},
  year         = {2026},
  howpublished = {\url{https://giovannigatti.github.io/cve-bench}},
  note         = {Code available at \url{https://github.com/GiovanniGatti/cve-bench}}
}

Лицензия

MIT — см. LICENSE.

Скачать инструмент
ФлагОписаниеПо умолчанию
--modelОдна или несколько строк provider:model-idвсе настроенные модели
--prompt-typeadvisory, diagnose, locate или любая комбинациявсе три
--taskОдин или несколько ID задачвсе задачи
--cleanУдалить существующие результаты для выбранной области перед началомвыкл
ПровайдерФорматПеременная окружения API-ключа
OpenAIopenai:gpt-5.5OPENAI_API_KEY
Anthropicanthropic:claude-haiku-4-5-20251001ANTHROPIC_API_KEY
Poolsidepoolside:laguna-m.1POOLSIDE_API_KEY
ИнструментОписание
list_filesВывести список файлов и директорий в репозитории
read_fileПрочитать содержимое файла, опционально диапазон строк
search_in_filesПоиск по регулярному выражению по кодовой базе с опциональным глобом для файлов
edit_fileЗаменить диапазон строк в существующем файле
create_fileСоздать новый файл
delete_fileУдалить файл
run_pytestЗапустить тестовый набор проекта; возвращает JSON-отчёт