
Полный репозиторий всех лабораторных работ, доступных в рамках бенчмарка
Бенчмарк для оценки AI-агентов на задачах веб-безопасности, созданный движком TarantuLabs.
TarantuBench — это набор из 100 уязвимых веб-приложений, каждое из которых содержит скрытый флаг (TARANTU{...}). Задача агента — найти и извлечь флаг, взаимодействуя с приложением через HTTP — так же, как это сделал бы человек-тестер на проникновение.
Задания варьируются от начального уровня (обход аутентификации через SQL-инъекцию) до продвинутых многошаговых цепочек атак, требующих эксплуатации до 5 уязвимостей последовательно — включая злоупотребление бизнес-логикой, хранимый XSS для кражи сессии, подделку JWT, SSRF и SQL-инъекцию во внутренних API.
Каждая лабораторная работа — это самодостаточное приложение на Node.js/Express с БД SQLite в памяти. Никаких внешних зависимостей, не требуется сетевой доступ — просто запустите сервер и начинайте исследование.
Все задания в этом релизе сгенерированы с помощью проприетарного движка генерации лабораторных работ TarantuLabs.
TarantuBench v1 представляет собой зрелый, масштабируемый бенчмарк, подкреплённый проверенным конвейером генерации:
Требования к Node-обвязке: Node.js 18+ и npm.
Требования к заданию Inspect AI: Python 3.11+, Docker и uv или другой
совместимый с PEP 517 установщик.
Набор запускаемых лабораторных работ опубликован на Hugging Face по адресу
tarantulabs/TarantuBench.
Этот репозиторий GitHub содержит оценочную обвязку и документацию.
git clone https://github.com/Trivulzianus/TarantuBench.git
cd TarantuBench
cd eval && npm install && cd ..
# Загрузите файл набора данных с Hugging Face или клонируйте репозиторий набора:
# git clone https://huggingface.co/datasets/tarantulabs/TarantuBench data
# Запустите вашего агента против всех 100 лабораторных работ
node eval/harness.js --dataset data/tarantubench-v1.jsonl \
--command "python my_agent.py --url {URL}" \
--timeout 300
# Сгенерируйте отчёт с результатами
node eval/scorecard.js
Перед проведением формальной оценки проверьте, что локальный набор данных или набор с Hugging Face имеет ожидаемое количество строк и схему:
node eval/validate-dataset.js --dataset data/tarantubench-v1.jsonl --expected-count 100
node eval/validate-dataset.js --hf tarantulabs/TarantuBench --expected-count 100
Обвязка запускает каждую лабораторную работу, помещает перед ней прозрачный прокси-логгер и выполняет команду вашего агента (заменяя {URL} на адрес цели). Ваш агент может быть написан на любом языке — ему нужно лишь отправлять HTTP-запросы и отправлять флаг через POST {URL}/submit-flag с телом {"flag": "TARANTU{...}"}.
# Запустите одну работу в режиме сервера — обвязка выведет URL, вы подключаете агента
node eval/harness.js --dataset data/tarantubench-v1.jsonl \
--labs corporate-portal-chain-xss-idor \
--mode server --timeout 300
Каждая строка в data/tarantubench-v1.jsonl представляет одно задание:
| Столбец | Тип | Описание |
|---|---|---|
lab_id | string | Уникальный идентификатор |
title | string | Человекочитаемое название задания |
description | string | Краткое описание сценария (показывается агенту) |
objectives | list[string] | Что агенту поручено выполнить |
hints | list[string] | Необязательные пошаговые подсказки (для абляционных исследований) |
difficulty | string | Beginner, Intermediate или Advanced |
category | string | Основное семейство уязвимостей (например, SQL Injection, XSS) |
vuln_subtype | string | Конкретная техника (например, sqli-union, xss-stored) |
chain_type | string или null | Идентификатор многошаговой цепочки или null для одноуязвимых работ |
server_code | string | Полный исходный код уязвимого приложения на Node.js/Express |
dependencies | object | Зависимости npm, необходимые для запуска сервера |
| Сложность | Количество | Описание |
|---|---|---|
| Beginner | 35 | Одна уязвимость, прямая эксплуатация |
| Intermediate | 25 | Требуется перебор, обход фильтров или многошаговая логика |
| Advanced | 40 | Многошаговые цепочки, ошибки бизнес-логики или глубокая эксплуатация |
| Категория | Количество |
|---|---|
| Цепочки множественных уязвимостей | 34 |
| SQL-инъекция | 20 |
| IDOR (Небезопасная прямая ссылка на объект) | 11 |
| Обход аутентификации/авторизации | 10 |
| XSS (Межсайтовый скриптинг) | 10 |
| Бизнес-логика | 8 |
| Инъекция команд | 5 |
| SSRF (Подделка запроса со стороны сервера) | 2 |
34 из 100 лабораторных работ требуют связывания нескольких уязвимостей:
| Тип цепочки | Количество | Шаги |
|---|---|---|
| SSRF → SQL-инъекция | 8 | Обход контроля доступа через SSRF, затем извлечение флага через SQLi |
| SSRF → Blind SQLi | 5 | SSRF для доступа к внутреннему эндпоинту, затем слепое булево извлечение |
| XSS → SQL-инъекция | 7 | Кража сессии администратора через хранимый XSS, затем использование поиска, доступного только админу, с SQLi |
| XSS → IDOR | 5 | Кража сессии администратора через хранимый XSS, затем доступ к скрытым данным через IDOR |
| JWT Forgery → Blind SQLi | 4 | Взлом слабого секрета JWT, подделка повышенного токена, извлечение флага по символам |
| JWT Forgery → IDOR | 3 | Взлом JWT, подделка повышенной роли, доступ к ограниченным эндпоинтам API |
| Biz Logic → XSS → JWT → SSRF → SQLi | 1 | 5-шаговая цепочка через злоупотребление рефералами, кражу сессии, подделку JWT, SSRF-переключение и union SQLi |
| XSS → JWT → SSRF → SQLi | 1 | 4-шаговая цепочка через кражу сессии, подделку JWT, SSRF и SQL-инъекцию |