Rista Tech Blog

株式会社リスタの技術?ブログ

あなたのRailsプロジェクトは大丈夫? Brakeman gemを使って、セキュリティチェックをしましょう

f:id:c5meg1012:20171214165652p:plain

こんにちは、エンジニアの望月(@c5meru)です。
最近、kindleで「徳丸本」を購入しました。
プロとしてお仕事していく以上、セキュリティの知識は欠かせないと思うので、じっくり読んでいこうと思います!

さて、今日はそんなセキュリティチェックに関するお話です。
表題のBrakemanは、Ruby on Railsアプリケーションの脆弱性チェックをしてくれる静的解析です。
簡単に導入でき、コマンドひとつで実行できるので、定期的に利用することをおすすめします!

Brakemanのインストール

まず、以下のように、Gemfileに1行追記します。

# Gemfile

source 'https://rubygems.org'

group :development, :test do
  gem 'brakeman', require: false    # この行を追記
end

次に、bundle install をします。

$ bundle install

これだけで、Brakemanのインストールは完了です。

Brakemanの実行

アプリケーションのルートディレクトリで、以下のコマンドを実行します。

$ brakeman

すると、以下のようにチェック結果が出力されます。

== Brakeman Report ==

Application Path: /Users/meru/rails_app
Rails Version: 5.1.4
Brakeman Version: 4.0.1
Scan Date: 2017-12-14 16:19:02 +0900
Duration: 6.525023 seconds
Checks Run: ....

== Overview ==

Controllers: 53
Models: 100
Templates: 82
Errors: 0
Security Warnings: 3

== Warning Types ==

Redirect: 1
SQL Injection: 1
SSL Verification Bypass: 1

== Warnings ==

// 以下、警告の内容

htmlオプション

以下のようなオプションを付けて実行すると、結果をhtmlで出力できます。

$ brakeman -o index.html

コマンドを実行したディレクトリに、htmlファイルが生成されているはずです。

エラー・警告の説明を見るオプション

チェック項目や、エラー・警告の内容は-kオプションで確認できます。

$ brakeman -k

Available Checks:
------------------------------
CheckBasicAuth                Checks for the use of http_basic_authenticate_with
CheckBasicAuthTimingAttack    Check for timing attack in basic auth (CVE-2015-7576)
CheckCrossSiteScripting       Checks for unescaped output in views
...

まとめ

以上、簡単なBrakemanの使い方でした。
指定のファイルをignoreしたりもできるようなので、公式のドキュメントもご参照ください🙇

brakemanscanner.org

エンジニアを募集しています

Ruby on Railsでの開発ができる方、募集しています!
詳しくは以下を見てみて下さい(`・ω・´)

www.wantedly.com

rista.job-list.net