
Strumento CLI che verifica le specifiche OpenAPI, le convalida rispetto alle best practice ed esegue test di sicurezza automatizzati per rilevare vulnerabilità e comportamenti indefiniti nelle API.
Cherrybomb è uno strumento CLI scritto in Rust che aiuta a prevenire implementazioni errate del codice nelle prime fasi di sviluppo. Funziona validando e testando la tua API utilizzando un file OpenAPI. Il suo obiettivo principale è ridurre gli errori di sicurezza e garantire che la tua API funzioni come previsto.
Cherrybomb si assicura che la tua API funzioni correttamente. Controlla il file di specifica della tua API (OpenAPI Specification) per buone pratiche e garantisce che segua le regole OAS. Quindi, testa la tua API per problemi comuni e vulnerabilità. Se vengono trovati problemi, Cherrybomb ti fornisce un report dettagliato con la posizione esatta del problema in modo che tu possa risolverlo facilmente.
DEPRECATED FOR NOW
Lo script richiede i permessi sudo per spostare il binario cherrybomb in /usr/local/bin/.
(Se vuoi visualizzare lo script shell (o anche aiutare a migliorarlo - /scripts/install.sh)
Puoi ottenere Cherrybomb tramite la sua versione containerizzata che è ospitata su AWS ECR e richiede una chiave API che puoi ottenere a quell'indirizzo (il caricamento è un po' lento) - DEPRECATO PER ORA
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
Se non hai cargo installato, puoi installarlo da qui
Puoi anche compilare Cherrybomb dai sorgenti clonando questo repository e compilandolo usando cargo.
git clone https://github.com/blst-security/cherrybomb && cd cherrybomb
Il file Cargo.toml del branch principale utilizza cherrybomb-engine e cherrybomb-oas da crates.io.
Se vuoi compilare anche quelli dai sorgenti, puoi modificare i seguenti file:
(rimuovi il numero di versione e sostituiscilo con il percorso del repository locale)
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 # or any other directory in your PATH
I profili ti permettono di scegliere il tipo di controllo che vuoi utilizzare.
- info: genera solo tabelle di parametri e endpoint
- normal: sia attivo che passivo
- intrusive: attivo e intrusivo [in sviluppo]
- passive: solo test passivi
- full: tutte le opzioni
Con un file di configurazione, puoi facilmente modificare e visualizzare le opzioni di Cherrybomb. Il file di configurazione ti permette di impostare il profilo di esecuzione, la posizione del file OAS, la verbosità e ignorare l'errore TLS.
Config ti permette anche di sovrascrivere l'URL del server con un array di server e aggiungere sicurezza alla richiesta [in sviluppo].
Nota che i parametri degli argomenti CLI sovrascriveranno le opzioni di configurazione se entrambi sono impostati.
Puoi anche aggiungere o rimuovere controlli da un profilo usando passive/active-include/exclude. [in sviluppo]
cherrybomb --config <CONFIG_FILE>
Struttura del file di configurazione:
{
"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,
}
Dopo l'installazione, verifica che funzioni eseguendo
cherrybomb --version
cherrybomb --file <PATH> --profile passive
Esempio di output passivo:

cherrybomb --file <PATH> --profile info
Output della tabella dei parametri:

Output della tabella degli endpoint:

DEPRECATO PER ORA - SARÀ SOSTITUITO PRESTO
Puoi integrarlo nella tua pipeline CI e se hai intenzione di farlo, ti consiglio di andare sul nostro sito web, iscriverti, seguire la procedura guidata di integrazione pipeline CI e copiare lo snippet groovy/GitHub actions creato per te.
Esempio:

Se hai domande, puoi chiederci sul nostro server Discord.
Sei anche il benvenuto ad aprire una Issue qui su GitHub.