Devise 5.0.4リリース:`FailureApp`のオープンリダイレクト脆弱性を修正
Devise 5.0.4がリリースされ、セッションタイムアウト時の非GETリクエストにおいてRefererヘッダーを検証せずリダイレクト先として使用していたオープンリダイレクト脆弱性が修正されました。
背景
Deviseの FailureApp は、認証失敗時やセッションタイムアウト時にユーザーをリダイレクトする役割を担うRackアプリケーションです。今回修正された問題は、セッションタイムアウト(Timeoutableモジュール)が発動した際の非GETリクエスト処理に潜んでいました。
セッションタイムアウトが発生した非GETリクエストに対して、FailureAppはリクエストのRefererヘッダーをリダイレクト先URLとして使用していましたが、このヘッダーの値を適切に検証していませんでした。RefererヘッダーはHTTPクライアントが任意の値に書き換えられるため、攻撃者が細工したリクエストを送ることで、ユーザーを外部の悪意あるサイトへ誘導できる状態でした。この脆弱性は GHSA-jp94-3292-c3xv として公開されています。なお、CHANGELOGに記載されているCVE番号(CVE-2026-40295)および日付(2026-05-08)は元データに記載された値をそのまま引用しています。
技術的な変更
今回のコミットはバージョン番号の更新とCHANGELOGの日付確定が主な差分です。セキュリティ修正の実装そのものは本コミットより前に行われており、本コミットはリリース作業のファイル更新にあたります。
lib/devise/version.rb のバージョン定数が "5.0.3" から "5.0.4" へ更新されました。
# 変更前
VERSION = "5.0.3".freeze
# 変更後
VERSION = "5.0.4".freeze
CHANGELOG.md のリリース日が仮置きの YYYY-MM-DD から 2026-05-08 に確定されました。また Gemfile.lock 内のdeviseのバージョン参照も 5.0.3 から 5.0.4 へ更新されています。
まとめ
本コミットは、FailureAppにおけるRefererヘッダー未検証のオープンリダイレクト脆弱性(GHSA-jp94-3292-c3xv)を修正したDevise 5.0.4のリリースコミットです。Timeoutableモジュールを使用しているアプリケーションは5.0.4へのアップデートを検討してください。