Brakemanは、Ruby on Railsアプリケーションをセキュリティの脆弱性をチェックする静的分析ツールです。
Rubygemsの使用:
gem install brakeman
バンドラーの使用:
group :development do
gem 'brakeman' , require : false
endDockerの使用:
docker pull presidentbeef/brakeman
Dockerを使用してソースから構築します。
git clone https://github.com/presidentbeef/brakeman.git
cd brakeman
docker build . -t brakeman
Railsアプリケーションのルートディレクトリから:
brakeman
レールルートの外:
brakeman /path/to/rails/application
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/アプリケーションに関連していることに注意してください):
docker run -v 'path/to/rails/application':/code presidentbeef/brakeman -o brakeman_results.html
Brakemanは、2.3.xから7.xまでのRailsの任意のバージョンで動作する必要があります。
Brakemanは、Ruby 2.0の構文以降で記述されたコードを分析できますが、実行するには少なくともRuby 3.0.0が必要です。
オプションの完全なリストについては、 brakeman --help使用します。
結果の出力ファイルを指定するには:
brakeman -o output_file
出力形式は、ファイル拡張子または-fオプションを使用することによって決定されます。現在のオプションは、 text 、 html 、 tabs 、 json 、 junit 、 markdown 、 csv 、 codeclimate 、 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 --no-exit-on-warn --no-exit-on-error
Brakemanが解析に問題がある可能性のある特定のファイルまたはディレクトリをスキップするには、以下を使用してください。
brakeman --skip-files file1,/path1/,path2/
スキャンの結果を以前のスキャンと比較するには、JSON出力オプションを使用してから次のことです。
brakeman --compare old_report.json
これにより、2つのリストがあるJSONが出力されます。固定警告の1つと新しい警告の1つです。
Brakemanは、そうするように構成されている場合、警告を無視します。デフォルトでは、 config/brakeman.ignoreで構成ファイルを探します。このファイルを作成および管理するには、次のことを使用します。
brakeman -I
出口コードに影響を与えずに無視した警告を一時的に表示したい場合は、以下を使用してください。
brakeman --show-ignored
このツールで報告された警告の詳細については、警告_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 、および/etc/brakeman/config.ymlです~/.brakeman/config.yml
-cオプションを使用して、使用する構成ファイルを指定できます。
Jenkins/Hudsonで利用できるプラグインがあります。
さらに継続的なテストについては、ガードプラグインを試してください。
利用可能ないくつかのGithubアクションがあります。
git clone git://github.com/presidentbeef/brakeman.git
cd brakeman
gem build brakeman.gemspec
gem install brakeman*.gem
..そしてもっと!
ウェブサイト:http://brakemanscanner.org/
Twitter:https://twitter.com/brakeman
チャット:https://gitter.im/presidentbeef/brakeman
Brakemanは非営利目的で無料です。
詳細については、コピーを参照してください。