
Herramienta CLI que audita especificaciones OpenAPI, las valida contra las mejores prácticas y ejecuta pruebas de seguridad automatizadas para detectar vulnerabilidades y comportamientos indefinidos en las APIs.
Cherrybomb es una herramienta CLI escrita en Rust que ayuda a prevenir implementaciones de código incorrectas en las primeras etapas del desarrollo. Funciona validando y probando tu API usando un archivo OpenAPI. Su objetivo principal es reducir los errores de seguridad y garantizar que tu API funcione como se espera.
Cherrybomb asegura que tu API funcione correctamente. Revisa el archivo de especificaciones de tu API (OpenAPI Specification) en busca de buenas prácticas y se asegura de que cumpla con las reglas de OAS. Luego, prueba tu API en busca de problemas y vulnerabilidades comunes. Si se encuentra algún problema, Cherrybomb te proporciona un informe detallado con la ubicación exacta del problema para que puedas solucionarlo fácilmente.
DEPRECADO POR AHORA
El script requiere permisos sudo para mover el binario de cherrybomb a /usr/local/bin/.
(Si quieres ver el script de shell (o incluso ayudar a mejorarlo - /scripts/install.sh)
Puedes obtener Cherrybomb a través de su versión contenedorizada alojada en AWS ECR, que requiere una clave API que puedes obtener en esa dirección (la carga es un poco lenta) - DEPRECADO POR AHORA
docker run --mount type=bind,source=[RUTA AL OAS],destination=/home public.ecr.aws/blst-security/cherrybomb:latest cherrybomb -f /home/[NOMBRE_OAS] --api-key=[CLAVE-API]
cargo install cherrybomb
Si no tienes cargo instalado, puedes instalarlo desde aquí
También puedes compilar Cherrybomb desde las fuentes clonando este repositorio y compilándolo con cargo.
git clone https://github.com/blst-security/cherrybomb && cd cherrybomb
El archivo Cargo.toml de la rama principal usa cherrybomb-engine y cherrybomb-oas desde crates.io.
si quieres compilarlos también desde las fuentes, puedes modificar los siguientes archivos:
(elimina el número de versión y reemplázalo con la ruta al repositorio 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 # o cualquier otro directorio en tu PATH
Los perfiles te permiten elegir el tipo de verificación que deseas usar.
- info: solo genera tablas de parámetros y endpoints
- normal: tanto activo como pasivo
- intrusive: activo e intrusivo [en desarrollo]
- passive: solo pruebas pasivas
- full: todas las opciones
Con un archivo de configuración, puedes editar y ver fácilmente las opciones de Cherrybomb. El archivo de configuración te permite establecer el perfil de ejecución, la ubicación del archivo OAS, la verbosidad e ignorar el error de TLS.
La configuración también permite sobrescribir la URL del servidor con un array de servidores y agregar seguridad a la solicitud [en desarrollo].
Ten en cuenta que los argumentos de la CLI sobrescribirán las opciones de configuración si ambos están establecidos.
También puedes agregar o eliminar verificaciones de un perfil usando passive/active-include/exclude. [en desarrollo]
cherrybomb --config <ARCHIVO_CONFIG>
Estructura del archivo de configuración:
{
"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,
}
Después de instalar, verifica que funciona ejecutando
cherrybomb --version
cherrybomb --file <RUTA> --profile passive
Ejemplo de salida pasiva:

cherrybomb --file <RUTA> --profile info
Salida de la tabla de parámetros:

Salida de la tabla de endpoints:

DEPRECADO POR AHORA - SERÁ REEMPLAZADO PRONTO
Puedes integrarlo en tu pipeline de CI. Si planeas hacerlo, te recomendaría que vayas a nuestro sitio web, te registres, accedas al asistente de integración de pipeline de CI y copies el fragmento de Groovy/acciones de GitHub creado para ti.
Ejemplo:

Si tienes alguna pregunta, puedes preguntarnos en nuestro servidor de Discord.
También eres bienvenido a abrir un Issue aquí en GitHub.