
CLI tool that audits OpenAPI specifications, validates them against best practices, and runs automated security tests to detect vulnerabilities and undefined behavior in APIs.
CherrybombはRustで書かれたCLIツールで、開発の早い段階で誤ったコード実装を防ぐのに役立ちます。OpenAPIファイルを使用してAPIを検証・テストすることで、セキュリティエラーを減らし、APIが意図した通りに機能することを保証します。
CherrybombはAPIが正しく動作していることを確認します。APIの仕様ファイル(OpenAPI Specification)をチェックしてベストプラクティスを確認し、OASルールに従っていることを確認します。次に、APIの一般的な問題や脆弱性をテストします。問題が見つかると、Cherrybombは問題の正確な場所を詳細なレポートで提供し、簡単に修正できるようにします。
DEPRECATED FOR NOW
このスクリプトは、cherrybombバイナリを/usr/local/bin/に移動するためにsudo権限が必要です。
(シェルスクリプトを確認したい場合(または改善に協力したい場合)は - /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がインストールされていない場合は、こちらからインストールできます。
このリポジトリをクローンし、cargoを使ってビルドすることで、Cherrybombをソースからビルドすることもできます。
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ファイルの場所、詳細度、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サーバーでお問い合わせいただけます。
GitHubでIssueを開いていただくことも歓迎します。