
brakeman v8.0.6
Ruby on Railsアプリケーション向けの静的解析セキュリティ脆弱性スキャナー
Brakeman
Brakeman は、Ruby on Rails アプリケーションのセキュリティ脆弱性をチェックする静的解析ツールです。
インストール
RubyGems を使用:
gem install brakeman
Bundler を使用:
group :development do
gem 'brakeman', require: false
end
Docker を使用:
docker pull presidentbeef/brakeman
ソースから Docker でビルド:
git clone https://github.com/presidentbeef/brakeman.git
cd brakeman
docker build . -t brakeman
使用方法
ローカル環境で実行
Rails アプリケーションのルートディレクトリから:
brakeman
Rails ルート外から:
brakeman /path/to/rails/application
Docker で実行
Rails アプリケーションのルートディレクトリから:
docker run -v "$(pwd)":/code presidentbeef/brakeman
もう少し見やすいカラーで:
docker run -v "$(pwd)":/code presidentbeef/brakeman --color
HTML レポート出力用:
docker run -v "$(pwd)":/code presidentbeef/brakeman -o brakeman_results.html
Rails ルート外から (出力ファイルは path/to/rails/application からの相対パスであることに注意):
docker run -v 'path/to/rails/application':/code presidentbeef/brakeman -o brakeman_results.html
互換性
Brakeman は Rails 2.3.x から 8.x までのすべてのバージョンで動作するはずです。
Brakeman は Ruby 2.0 以降の構文で書かれたコードを解析できますが、実行には Ruby 3.2.0 以上が必要です。
基本オプション
全オプションの一覧は brakeman --help または OPTIONS.md ファイルを参照してください。
結果の出力ファイルを指定するには:
brakeman -o output_file
出力形式はファイル拡張子または -f オプションで決定されます。現在のオプション: text, html, tabs, json, junit, markdown, csv, codeclimate, github, sarif, sonar。
複数の出力ファイルを指定できます:
brakeman -o output.html -o output.json
ファイルとコンソールの両方にカラーで出力するには:
brakeman --color -o /dev/stdout -o output.json
情報警告を抑制してレポートのみ出力するには:
brakeman -q
Brakeman の出力 (レポート以外) はすべて stderr に送られるため、stdout をファイルにリダイレクトしてレポートだけを取得するのが簡単です。
デバッグ情報をすべて表示するには:
brakeman -d
特定のチェックをスキップすることもできます。名前は正しい大文字小文字である必要があります。例: デフォルトルート (DefaultRoutes) のチェックをスキップ:
brakeman -x DefaultRoutes
複数のチェックはカンマで区切ります:
brakeman -x DefaultRoutes,Redirect
逆に特定のテストだけを実行するには:
brakeman -t SQL,ValidationRegex
Brakeman の動作が遅い場合は、以下を試してください:
brakeman --faster
これにより一部の機能が無効になりますが、通常はかなり高速になります (現在は --skip-libs --no-branching と同じです)。 警告: これにより Brakeman が一部の脆弱性を見逃す可能性があります。
デフォルトでは、セキュリティ警告が検出された場合やスキャンエラーが発生した場合、Brakeman はゼロ以外の終了コードを返します。これを無効にするには:
brakeman --no-exit-on-warn --no-exit-on-error
Brakeman が解析に問題を抱える可能性がある特定のファイルやディレクトリをスキップするには:
brakeman --skip-files file1,/path1/,path2/
以前のスキャン結果と比較するには、JSON 出力オプションを使用した後:
brakeman --compare old_report.json
これにより、修正された警告と新たな警告の2つのリストを含む JSON が出力されます。
Brakeman は設定により警告を無視できます。デフォルトでは config/brakeman.ignore の設定ファイルを探します。このファイルを作成および管理するには:
brakeman -I
終了コードに影響を与えずに、無視した警告を一時的に表示したい場合:
brakeman --show-ignored
警告情報
このツールによって報告される警告の詳細については warning_types を参照してください。
警告コンテキスト
HTML 出力形式では、警告がトリガーされた元のアプリケーションソースの抜粋が提供されます。脆弱性を探すための処理中に、ソースが報告された警告と異なったり、報告された行番号がわずかにずれたりすることがあります。ただし、コンテキストは警告を発生させたコードへのクイックビューを提供します。
信頼度レベル
Brakeman は各警告に信頼度レベルを割り当てます。これは、特定の警告が実際に問題である確率の大まかな推定値を提供します。当然ながら、これらの評価は絶対的な真実として受け取るべきではありません。
信頼度には3つのレベルがあります:
- 高 - 単純な警告 (ブール値) であるか、ユーザー入力が安全でない方法で使用されている可能性が非常に高い。
- 中 - 一般に変数の安全でない使用を示しますが、その変数がユーザー入力かどうかは不明。
- 弱 - 通常、ユーザー入力が間接的に安全でない可能性のある方法で使用されたことを意味します。
特定の信頼度以上の警告のみを取得するには:
brakeman -w3
-w スイッチは 1 から 3 の数値を取り、1 は低 (すべての警告)、3 は高 (最も信頼度の高い警告のみ) です。
設定ファイル
Brakeman のオプションは YAML ファイルに保存して読み込むことができます。
設定ファイルの作成を簡略化するために、-C オプションは現在設定されているオプションを出力します:
$ brakeman -C --skip-files plugins/
---
:skip_files:
- plugins/
コマンドラインで指定されたオプションは設定ファイルよりも優先されます。
デフォルトの設定場所は ./config/brakeman.yml、~/.brakeman/config.yml、/etc/brakeman/config.yml です。
-c オプションで使用する設定ファイルを指定できます。
継続的インテグレーション
Jenkins/Hudson 用の プラグイン が利用可能です。
さらに継続的なテストには Guard プラグイン をお試しください。
いくつかの GitHub Actions も利用可能です。
ビルド
git clone git://github.com/presidentbeef/brakeman.git
cd brakeman
gem build brakeman.gemspec
gem install brakeman*.gem
Brakeman を使用している組織
ホームページ/ニュース
ウェブサイト: http://brakemanscanner.org/
Twitter: https://twitter.com/brakeman
チャット: https://gitter.im/presidentbeef/brakeman
ライセンス
Brakeman は非商用利用において無料です。
詳細は COPYING を参照してください。