
CLI-инструмент, который проводит аудит спецификаций OpenAPI, проверяет их соответствие лучшим практикам и запускает автоматические тесты безопасности для выявления уязвимостей и неопределённого поведения в API.
Cherrybomb — это CLI-инструмент, написанный на Rust, который помогает предотвратить некорректную реализацию кода на ранних этапах разработки. Он работает путём валидации и тестирования вашего API с использованием файла OpenAPI. Основная цель — уменьшить количество ошибок безопасности и убедиться, что ваше API работает так, как задумано.
Cherrybomb проверяет, правильно ли работает ваше API. Он анализирует файл спецификации API (OpenAPI Specification) на предмет соблюдения лучших практик и гарантирует, что он соответствует правилам OAS. Затем он тестирует ваше API на наличие распространённых проблем и уязвимостей. Если найдены какие-либо проблемы, Cherrybomb предоставляет подробный отчёт с точным указанием местоположения проблемы, чтобы вы могли легко её исправить.
УСТАРЕЛО НА ДАННЫЙ МОМЕНТ
Для выполнения скрипта требуются права sudo для перемещения бинарного файла cherrybomb в /usr/local/bin/.
(Если вы хотите посмотреть shell-скрипт (или помочь его улучшить) - /scripts/install.sh)
Вы можете получить Cherrybomb через контейнеризированную версию, размещённую на AWS ECR. Для этого требуется API-ключ, который можно получить по этому адресу (загрузка может быть немного медленной) - УСТАРЕЛО НА ДАННЫЙ МОМЕНТ
docker run --mount type=bind,source=[PATH TO OAS],destination=/home public.ecr.aws/blst-security/cherrybomb:latest cherrybomb -f /home/[OAS NAME] --api-key=[API-KEY]
cargo install cherrybomb
Если у вас не установлен cargo, вы можете установить его отсюда
Вы также можете собрать Cherrybomb из исходников, клонировав этот репозиторий и выполнив сборку с помощью cargo.
git clone https://github.com/blst-security/cherrybomb && cd cherrybomb
Файл Cargo.toml основной ветки использует cherrybomb-engine и cherrybomb-oas из crates.io.
Если вы хотите собрать их тоже из исходников, измените следующие файлы:
(удалите номер версии и замените на путь к локальному репозиторию)
cherrybomb/Cargo.toml:
cherrybomb-engine = version => { path = "cherrybomb-engine" }
cherrybomb/cherrybomb-engine/Cargo.toml:
cherrybomb-oas = version => { path = "../cherrybomb-oas" }
cargo build --release
sudo mv ./target/release/cherrybomb /usr/local/bin # или любая другая директория в вашем PATH
Профили позволяют выбрать тип проверки, которую вы хотите использовать.
- info: только генерация таблиц параметров и конечных точек
- normal: как активные, так и пассивные проверки
- intrusive: активные и интрузивные [в разработке]
- passive: только пассивные тесты
- full: все опции
С помощью файла конфигурации вы можете легко редактировать и просматривать параметры Cherrybomb. Файл конфигурации позволяет задать профиль выполнения, расположение OAS-файла, уровень детализации (verbosity) и игнорировать ошибки TLS.
Конфигурация также позволяет переопределить URL сервера массивом серверов и добавить аутентификацию к запросам [в разработке].
Обратите внимание, что аргументы CLI-команд переопределяют параметры конфигурации, если заданы оба.
Вы также можете добавлять или удалять проверки из профиля с помощью passive/active-include/exclude. [в разработке]
cherrybomb --config <CONFIG_FILE>
Структура файла конфигурации:
{
"file" : "open-api.json",
"verbosity" : "normal,
"profile" : " "Normal",
"passive_include" : ["check1, checks2"],
"active_include": ["check3, check4"],
"servers_override" , ["http://server/"],
"security": [{
"auth_type": "Basic",
"auth_value" : token_value,
"auth_scope" : scope_name
}],
"ignore_tls_errors" : true,
"no_color" : false,
}
После установки проверьте, что всё работает, выполнив
cherrybomb --version
cherrybomb --file <PATH> --profile passive
Пример пассивного вывода:

cherrybomb --file <PATH> --profile info
Вывод таблицы параметров:

Вывод таблицы конечных точек:

УСТАРЕЛО НА ДАННЫЙ МОМЕНТ - СКОРО БУДЕТ ЗАМЕНЕНО
Вы можете встроить его в свой CI-конвейер. Если вы планируете это сделать, рекомендую перейти на наш веб-сайт, зарегистрироваться, пройти мастер интеграции CI-конвейера и скопировать сгенерированный для вас фрагмент Groovy/GitHub Actions.
Пример:

Если у вас есть вопросы, вы можете задать их на нашем discord-сервере.
Вы также можете открыть Issue здесь, на GitHub.