
Outil CLI qui audite les spécifications OpenAPI, les valide par rapport aux bonnes pratiques et exécute des tests de sécurité automatisés pour détecter les vulnérabilités et les comportements indéfinis dans les API.
Cherrybomb est un outil CLI écrit en Rust qui aide à prévenir les implémentations de code incorrectes dès le début du développement. Il fonctionne en validant et en testant votre API à l'aide d'un fichier OpenAPI. Son objectif principal est de réduire les erreurs de sécurité et de garantir que votre API fonctionne comme prévu.
Cherrybomb s'assure que votre API fonctionne correctement. Il vérifie le fichier de spécification de votre API (OpenAPI Specification) pour les bonnes pratiques et s'assure qu'il respecte les règles OAS. Ensuite, il teste votre API pour détecter les problèmes courants et les vulnérabilités. Si des problèmes sont trouvés, Cherrybomb vous fournit un rapport détaillé avec l'emplacement exact du problème afin que vous puissiez le corriger facilement.
DÉPRÉCIÉ POUR L'INSTANT
Le script nécessite les permissions sudo pour déplacer le binaire cherrybomb dans /usr/local/bin/.
(Si vous voulez voir le script shell (ou même aider à l'améliorer) - /scripts/install.sh)
Vous pouvez obtenir Cherrybomb via sa version conteneurisée hébergée sur AWS ECR, et nécessite une clé API que vous pouvez obtenir sur cette adresse (le chargement est un peu lent) - DÉPRÉCIÉ POUR L'INSTANT
docker run --mount type=bind,source=[CHEMIN VERS OAS],destination=/home public.ecr.aws/blst-security/cherrybomb:latest cherrybomb -f /home/[NOM OAS] --api-key=[CLÉ-API]
cargo install cherrybomb
Si vous n'avez pas cargo installé, vous pouvez l'installer à partir d'ici
Vous pouvez également compiler Cherrybomb depuis les sources en clonant ce dépôt et en le compilant avec cargo.
git clone https://github.com/blst-security/cherrybomb && cd cherrybomb
Le fichier Cargo.toml de la branche principale utilise cherrybomb-engine et cherrybomb-oas depuis crates.io.
Si vous voulez aussi les compiler depuis les sources, vous pouvez modifier les fichiers suivants :
(supprimez le numéro de version et remplacez-le par le chemin vers le dépôt local)
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 # ou tout autre répertoire dans votre PATH
Les profils vous permettent de choisir le type de vérification que vous souhaitez utiliser.
- info : génère uniquement les tableaux de paramètres et d'endpoints
- normal : tests actifs et passifs
- intrusif : tests actifs et intrusifs [en développement]
- passif : tests passifs uniquement
- complet : toutes les options
Grâce à un fichier de configuration, vous pouvez facilement modifier et consulter les options de Cherrybomb. Le fichier de configuration vous permet de définir le profil d'exécution, l'emplacement du fichier OAS, la verbosité et d'ignorer les erreurs TLS.
La configuration permet également de remplacer l'URL du serveur par un tableau de serveurs et d'ajouter une sécurité à la requête [en développement].
Notez que les arguments CLI remplaceront les options de configuration si les deux sont définis.
Vous pouvez également ajouter ou supprimer des vérifications d'un profil en utilisant passive/active-include/exclude. [en développement]
cherrybomb --config <FICHIER_CONFIG>
Structure du fichier de configuration :
{
"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,
}
Après l'installation, vérifiez son bon fonctionnement en exécutant
cherrybomb --version
cherrybomb --file <CHEMIN> --profile passif
Exemple de sortie passive :

cherrybomb --file <CHEMIN> --profile info
Sortie du tableau des paramètres :

Sortie du tableau des endpoints :

DÉPRÉCIÉ POUR L'INSTANT - SERA REMPLACÉ BIENTÔT
Vous pouvez l'intégrer dans votre pipeline CI, et si vous prévoyez de le faire, je vous recommande d'aller sur notre site Web, de vous inscrire, de passer par l'assistant d'intégration de pipeline CI et de copier l'extrait Groovy/actions GitHub créé pour vous.
Exemple :

Si vous avez des questions, vous pouvez nous les poser sur notre serveur Discord.
Vous êtes également invités à ouvrir une Issue ici sur GitHub.