🐝

【Rails】gem使ってみたシリーズ 〜bundler-audit編〜 Gemの脆弱性をチェック

に公開

はじめに

昨今、React や Node.js で脆弱性が確認されるなど、改めてセキュリティ対策の重要性が高まっています。

Ruby on Rails においても、普段使用している gem に脆弱性が発見されることがあります。

そのため、定期的にアプリケーションで使用している gem の脆弱性をチェックすることは非常に重要です。

今回は、bundler-audit という gem を使って、アプリケーションで使用している gem の脆弱性をチェックする方法をご紹介します。

https://rubygems.org/gems/bundler-audit

https://github.com/rubysec/bundler-audit

注意点

環境

bundler-audit とは

bundler-audit とは、Ruby Advisory Database を利用して、Gemfile.lock に記載されている gem の脆弱性をチェックする gem です。

Ruby Advisory Database とは、Ruby に関連するライブラリのセキュリティアドバイザリをまとめたものです。

Ruby Advisory Database、bundler-audit ともに RubySec というセキュリティリソースを提供してくれているコミュニティによって管理されています。

https://rubysec.com

https://github.com/rubysec/ruby-advisory-db

bundler-audit の使い方

まず、bundler-audit をインストールします。

Gemfile
+ gem 'bundler-audit'
docker compose exec app bundle install

次に、bundler-audit のデータベースを更新します。

docker compose exec app bundle exec bundle-audit update

最後に、脆弱性をチェックします。

docker compose exec app bundle exec bundle-audit check

また、bundler-audit のデータベースの更新と脆弱性のチェックを同時に行うこともできます。

docker compose exec app bundle exec bundle-audit check --update

私の検証用のアプリケーションで実行してみました。

docker compose exec app bundle exec bundle-audit check --update
Updating ruby-advisory-db ...
From https://github.com/rubysec/ruby-advisory-db
 * branch            master     -> FETCH_HEAD
Already up to date.
Updated ruby-advisory-db
ruby-advisory-db:
  advisories:	1047 advisories
  last updated:	2026-01-20 18:50:38 -0800
  commit:	ac9049718d011cfe7ff242a187a41e5bce41559a
Name: actionpack
Version: 7.0.8.6
CVE: CVE-2024-54133
GHSA: GHSA-vfm5-rmrh-j26v
Criticality: Unknown
URL: https://github.com/rails/rails/security/advisories/GHSA-vfm5-rmrh-j26v
Title: Possible Content Security Policy bypass in Action Dispatch
Solution: update to '~> 7.0.8, >= 7.0.8.7', '~> 7.1.5, >= 7.1.5.1', '~> 7.2.2, >= 7.2.2.1', '>= 8.0.0.1'

Name: activerecord
Version: 7.0.8.6
CVE: CVE-2025-55193
GHSA: GHSA-76r7-hhxj-r776
Criticality: Unknown
URL: https://github.com/rails/rails/security/advisories/GHSA-76r7-hhxj-r776
Title: Active Record logging vulnerable to ANSI escape injection
Solution: update to '~> 7.1.5, >= 7.1.5.2', '~> 7.2.2, >= 7.2.2.2', '>= 8.0.2.1'

~ (省略) ~

Name: uri
Version: 1.0.2
CVE: CVE-2025-61594
GHSA: GHSA-j4pr-3wm6-xx2r
Criticality: Unknown
URL: https://www.ruby-lang.org/en/news/2025/10/07/uri-cve-2025-61594
Title: CVE-2025-61594 - URI Credential Leakage Bypass over CVE-2025-27221
Solution: update to '~> 0.12.5', '~> 0.13.3', '>= 1.0.4'

Vulnerabilities found!

一部省略しましたが、全部で45個の脆弱性が検出されました。

解消するために gem のバージョンアップを行います。(本当は動作確認をしながら慎重にバージョンアップをしないといけませんが、今回は割愛します。)

docker compose exec app bundle update

再度、脆弱性をチェックしてみます。

docker compose exec app bundle exec bundle-audit check --update
Updating ruby-advisory-db ...
From https://github.com/rubysec/ruby-advisory-db
 * branch            master     -> FETCH_HEAD
Already up to date.
Updated ruby-advisory-db
ruby-advisory-db:
  advisories:	1047 advisories
  last updated:	2026-01-20 18:50:38 -0800
  commit:	ac9049718d011cfe7ff242a187a41e5bce41559a
No vulnerabilities found

先ほど検出された脆弱性はすべて解消されていることが確認できました。

おわりに

今回は、bundler-audit を使って、アプリケーションで使用している gem の脆弱性をチェックする方法をご紹介しました。

導入も簡単で、定期的にチェックを行うことで、セキュリティリスクを低減することができます。

また、CI/CD パイプラインに組み込むことで、自動的に脆弱性チェックを行うことも可能です。

ぜひ皆さんのアプリケーションにも bundler-audit を導入してみてください。

最後までお読みいただき、ありがとうございました。

GitHubで編集を提案
株式会社L&E Group

Discussion