LoginSignup
12
6

More than 3 years have passed since last update.

【Rails】bundler-auditの使い方

Posted at

bundler-auditとは

bundler-auditはプロジェクトで利用しているGemの脆弱性の有無をチェックしてくれるGemです。
システムの脆弱性チェックの一つとして利用できますね。

検証した環境

  • Ruby 2.7.0
  • bundler-audit 0.6.1

準備

bundle install

Gemfileに以下を追加してbundle install

Gemfile
group :development do
  gem 'bundler-audit'
end
$ bundle install

脆弱性チェックに使用するDBを更新する

脆弱性チェックを実行する前に、bundler-auditが使用するDBの更新を行いましょう。

$ bundle exec bundler-audit update

このコマンドでは、実際には$HOME/.local/shareディレクトリ配下にrubysec/ruby-advisory-dbgit cloneしているようです。

脆弱性の存在するGemをチェックする

実際にbundler-auditを実行してGemの脆弱性をチェックしてみましょう。
以下のコマンドで実行できます。
脆弱性が見つからなかった場合はNo vulnerabilities foundと出力されます。

$ bundle exec bundler-audit
No vulnerabilities found

DBの更新と脆弱性チェックを同時に実行する

以下のコマンドで脆弱性チェックに使用するDBの更新と脆弱性チェックを同時に実行できます。
DBの更新忘れを防ぐためにも、基本的には以下のコマンドを利用するほうがいいでしょう。

$ bundle exec bundler-audit check --update

実際に脆弱性があるGemをインストールして検証してみる

bundler-auditの出力を確認するために、実際に脆弱性が存在するGemのインストール~脆弱性チェック~修正までやってみます。

脆弱性があるGemをインストール

実際に脆弱性が存在するGemをインストールしてみます。
ここでは試しにbootstrapv4.3.0をインストールしてみます。
Gemfileに以下を追記してbundle install

Gemfile
gem 'bootstrap', '4.3.0'
$ bundle install

脆弱性をチェックする

bundler-auditを実行してみます。

$ bundle exec bundler-audit
Name: bootstrap
Version: 4.3.0
Advisory: CVE-2019-8331
Criticality: Medium
URL: https://blog.getbootstrap.com/2019/02/13/bootstrap-4-3-1-and-3-4-1/
Title: XSS vulnerability in bootstrap
Solution: upgrade to >= 4.3.1

Vulnerabilities found!

脆弱性が見つかったGemとその内容、解決するバージョンまでわかりやすく出力してくれます。

脆弱性を無視する

場合によってはbundler-auditによって見つかった脆弱性を無視したいこともあるかと思います。
そういうときは--ignoreオプションに無視したいAdvisoryを指定しましょう。

$ bundle exec bundler-audit --ignore CVE-2019-8331
No vulnerabilities found

脆弱性のあるGemのバージョンを上げる

先ほどbundler-auditで出力された内容には

Solution: upgrade to >= 4.3.1

と書いてあったので、それに従ってGemfileを修正してみます。
(※実際にはGemfileにバージョンを指定していない場合の方が多いと思うので、その場合はbundle updateコマンド等を利用してください。)

Gemfile
-gem 'bootstrap', '4.3.0'
+gem 'bootstrap', '4.3.1'
$ bundle install

bootstrapのバージョンを上げたのでもう一度bundler-auditを実行してみます。

$ bundle exec bundler-audit
No vulnerabilities found

警告が出なくなりました!

参考

12
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
6