Ruby on Rails セキュリティ修正7.0.2.3、6.1.4.7、6.0.4.7、5.2.6.3がリリースされました。
Rails 7.0.2.3, 6.1.4.7, 6.0.4.7, and 5.2.6.3 have been released! This is a security release, so please upgrade soon! Here is the release announcement: https://t.co/XwvI1uF8UL
Have a great day! ❤️
— Ruby on Rails (@rails) March 8, 2022
英語版Changelogをまとめて見るにはGItHubのリリースタグ↓が便利です。
- Release 7.0.2.3 · rails/rails(日本時間2021年3月9日6:57)
- Release 6.1.4.7 · rails/rails(日本時間2021年3月9日6:55)
- Release 6.0.4.7 · rails/rails(日本時間2021年3月9日6:54)
- Release 5.2.6.3 · rails/rails(日本時間2021年3月9日6:53)
詳しくは以下のコミットリスト差分をご覧ください。
- Comparing v7.0.2.2...v7.0.2.3 · rails/rails
- Comparing v6.1.4.6...v6.1.4.7 · rails/rails
- Comparing v6.0.4.6...v6.0.4.7 · rails/rails
- Comparing v5.2.6.2...v5.2.6.3 · rails/rails
なお、Rails 5.2.xのサポートは2022年6月1日に終了します。この機会に確認しましょう。
参考: Ruby on Rails のメンテナンスポリシー - Railsガイド
🔗 セキュリティ修正の概要
🔗 Active Storageでコード注入の脆弱性の可能性
詳しくは以下のDiscussionを参照して下さい。
該当するバージョンのRailsで、Active Storageモジュールにコード注入の脆弱性の可能性があります(CVE-2022-21831)。image_processing
を用いるActive Storageのバックエンドでmini_magick
を使っている場合に、この脆弱性の影響を受けます。
脆弱なコードは以下のような感じになります(変換用メソッドやその引数が、信頼できない任意の入力になっている)。
<%= image_tag blob.variant(params[:t] => params[:v]) %>
この問題の影響を受けるリリースを実行しているユーザーは、ただちにアップグレードするか後述の回避方法を適用してください。
- 影響を受けるRailsバージョン
- Rails 5.2.0以降
- 影響を受けないRailsバージョン
- Rails 5.2.0未満
- 修正済みバージョン
- 7.0.2.3、6.1.4.7、 6.0.4.7、 5.2.6.3
回避方法
この問題を回避するには、受け取れる変換用メソッドや引数の厳密な許可リストをアプリケーションで実装する必要があります。ImageMagickの以下のセキュリティポリシーも問題の緩和に有用です。
パッチ
ただちにアップグレードできない事情があるユーザー向けに、以下のパッチが提供されています(git-am形式)。
- 7-0-active-storage-code-injection.patch (17.9 KB)
- 6-1-active-storage-code-injection.patch (17.9 KB)
- 6-0-active-storage-code-injection.patch (19.0 KB)
- 5-2-active-storage-code-injection.patch (16.2 KB)
TechRachoではRubyやRailsの最新情報などの記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:Railsリリース情報タグ)