Railsユーザーが真っ先にするべきセキュリティチェック – Brakeman

(Last Updated On: 2017/09/21) 実はあまり知られていないセキュリティの常識。現状を知らないと隠れた大きなリスクを見逃します。

Railsユーザーがソースコード検査やWebサイト診断を受ける前に真っ先に使った方が良いセキュリティ検査ツールがあまり使われていないように感じています。

Brakemanはかなり良くできたツールです。私は何年も前から補助的に使っています。

Brakemanのインストールと使い方

Brakemanのページを見れば説明の必要もないですが、一応説明します。

rbenvを使っている場合、Railsで利用しているRubyのバージョンをローカルに合わせておきます。Rubyユーザーは普通にrbenvなどを使うべきでしょう。

Brakemanのgemをインストールします。

Brakemanを実行します。BrakemanはRailsプロジェクトのソースコードを静的に検査するツールなのでbundleなどを実行する必要はありません。

上記のコマンドは

  • -A  全ての検査を行う
  • -f html  HTML形式の出力(オススメ)
  • -o 出力ファイル名

を指定して実行しています。

Gnome環境なら

とするとHTMLで整形された出力を参照できます。

以下のような出力を得られます。

この実行結果はとある日本製のオープンソースCMSのRailsアプリに対して実行した結果です。1 Messageの部分をクリックすると問題の行を表示してくれる親切さです。

  • 70の脆弱なコード候補や設定問題が見つかった
  • そのうち13は危険性が高い問題だった
  • SQLインジェクションに脆弱なRailsバージョンで固定している

など、色々と判ります。

軽く結果を参照してみたところ、フォルスポジティブ(誤検出)もありますが、明らかに本当にダメ(攻撃可能)だろう、と思われるモノも複数ありました。詳しくは見ていません。RailsバージョンはSQLインジェクションに脆弱ですが、このCMSに影響があるのかなどもチェックしていません。

Brakemanは例としてでチェックしたRailsアプリケーションには十分有用であることが判ります。他の多くのRailsアプリケーションにも有用であることが多いでしょう。

弊社でもRailsのソースコード検査もしていますが、Brakemanを予め使っておいて頂くのは大歓迎です。Brakemanレベルの検査は機械的可能な検査、初歩的な検査です。人力で検査するとBrakemanで見つかる以上の問題が普通に見つかります。Brakemanでこれだけ出てくる場合、ソースコード検査をすると必ず色々と出てきます。Brakemanを使って予め存在する問題を修正しておいて頂く方が、実は助かります。

Railsユーザーの皆さん、セキュリティ検査をする前にBrakemanを使ってみましょう。役立つことが多いと思います。そしてBrakemanは完璧ではない事にも留意してください。普通にソースコード検査をすると検出できないモノが色々出てきます。

 

 

 


  1. 実はこのアプリはたまたまgithubで見て「どの程度だろう?」とよくあるRailsである脆弱性の部分を見てみると、ものの数分でJavaScriptインジェクションに脆弱であることを見つけたアプリです。オープンソースの物だから、と言ってもこういう感じであるのが”普通”です。これに関してはレポートしておきました。しばらくして修正されたようです。ある会社さんが開発元だったので、レポートと同時にコード検査サービスのご利用をお勧めしておきました。 

Comments

comments

実はあまり知られていないセキュリティの常識。現状を知らないと隠れた大きなリスクを見逃します。