
Ferramenta de linha de comando que audita especificações OpenAPI, valida-as contra melhores práticas e executa testes de segurança automatizados para detectar vulnerabilidades e comportamentos indefinidos em APIs.
Cherrybomb é uma ferramenta CLI escrita em Rust que ajuda a prevenir implementações de código incorretas no início do desenvolvimento. Ela funciona validando e testando sua API usando um arquivo OpenAPI. Seu principal objetivo é reduzir erros de segurança e garantir que sua API funcione conforme o esperado.
Cherrybomb garante que sua API esteja funcionando corretamente. Ele verifica o arquivo de especificação da sua API (OpenAPI Specification) em busca de boas práticas e garante que siga as regras do OAS. Em seguida, testa sua API para problemas e vulnerabilidades comuns. Se algum problema for encontrado, o Cherrybomb fornece um relatório detalhado com a localização exata do problema para que você possa corrigi-lo facilmente.
DEPRECATED FOR NOW
O script requer permissões sudo para mover o binário do cherrybomb para /usr/local/bin/.
(Se você quiser ver o script shell (ou até mesmo ajudar a melhorá-lo - /scripts/install.sh))
Você pode obter o Cherrybomb através de sua versão em contêiner, hospedada no AWS ECR, e requer uma chave de API que você pode obter nesse endereço (o carregamento é um pouco lento) - DEPRECIADO POR ENQUANTO
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 você não tiver o cargo instalado, pode instalá-lo a partir daqui aqui
Você também pode compilar o Cherrybomb a partir das fontes clonando este repositório e compilando usando o cargo.
git clone https://github.com/blst-security/cherrybomb && cd cherrybomb
O arquivo Cargo.toml do branch principal usa cherrybomb-engine e cherrybomb-oas do crates.io.
se você quiser compilá-los também a partir das fontes, pode alterar os seguintes arquivos:
(remova o número da versão e substitua pelo caminho para o repositório 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 # or any other directory in your PATH
Os perfis permitem que você escolha o tipo de verificação que deseja usar.
- info: gera apenas tabelas de parâmetros e endpoints
- normal: testes ativos e passivos
- intrusivo: ativo e intrusivo [em desenvolvimento]
- passivo: apenas testes passivos
- completo: todas as opções
Com um arquivo de configuração, você pode facilmente editar e visualizar as opções do Cherrybomb. O arquivo de configuração permite definir o perfil de execução, a localização do arquivo OAS, o nível de detalhamento e ignorar o erro TLS.
A configuração também permite substituir a URL do servidor por uma matriz de servidores e adicionar segurança à solicitação [em desenvolvimento].
Observe que os parâmetros de argumentos da CLI substituirão as opções de configuração se ambos estiverem definidos.
Você também pode adicionar ou remover verificações de um perfil usando passive/active-include/exclude. [em desenvolvimento]
cherrybomb --config <CONFIG_FILE>
Estrutura do arquivo de configuração:
{
"file" : "open-api.json",
"verbosity" : "normal",
"profile" : "Normal",
"passive_include" : ["check1, check2"],
"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,
}
Após a instalação, verifique se está funcionando executando
cherrybomb --version
cherrybomb --file <PATH> --profile passive
Exemplo de saída passiva:

cherrybomb --file <PATH> --profile info
Saída da tabela de parâmetros:

Saída da tabela de endpoints:

DEPRECIADO POR ENQUANTO - SERÁ SUBSTITUÍDO EM BREVE
Você pode incorporá-lo ao seu pipeline de CI e, se planeja fazer isso, recomendo que vá ao nosso site, inscreva-se, siga o assistente de integração de pipeline de CI e copie o trecho groovy/GitHub Actions criado para você.
Exemplo:

Se você tiver alguma dúvida, pode nos perguntar em nosso servidor Discord.
Você também pode abrir uma Issue aqui no GitHub.