Railsに21件の修正、画像の添付でファイル書き込みのおそれ

Ruby on Rails が
脆弱性の概要
- 対象
- Rails
- 悪用
- 確認されていない
- 影響
- アップロードしたファイルでサーバーにファイルを書き込まれる
- 修正版
- 修正版あり
- 公表元
- Ruby on Rails / GitHub
| 製品 | 対象のバージョン | 修正版 |
|---|---|---|
| Rails 8.1系 | 8.1.4.1 より前 | 8.1.4.1 |
| Rails 8.0系 | 8.0.5.2 より前 | 8.0.5.2 |
| Rails 7.2系以前 | すべて | 修正版の公開なし(サポート対象外) |
やること
Ruby on Rails(以下 Rails)は Ruby で Web システムを作るためのフレームワークです。Rails で動くシステムを持っている場合は、次の順で進めてください。
- Rails を 8.1.4.1 か 8.0.5.2 に更新してください。Rails の発表によると、8.0 系のセキュリティの修正は11月7日までとされています。8.0 系を使っている場合は、8.1 系への移行も計画してください
- 7.2 系以前は発表でサポートの対象外とされ、少なくとも 8.0 系以上に上げるよう勧められています
- 添付ファイルを Disk サービス(サーバーのディスク)に保存していた場合は、更新のあとに
secret_key_baseをはじめ、アプリが読める秘密の値をすべて作り直してください
すぐに更新できない場合の回避策として、activestorage/lib/active_storage/image_magick/policy.xml の規則を、サーバー全体の ImageMagick の設定(例 /etc/ImageMagick-7/policy.xml)に写してください。最低でも MSL のコーダー、Ghostscript のコーダー、gs の委譲を拒否する設定にします。
何が危ないのか
Rails の開発チームは11月4日に 8.0.5.2 と 8.1.4.1 を公開し、21件のセキュリティの問題を修正しました。
いちばん深刻なのは Active Storage の画像の解析の欠陥(GHSA-f3w6-w445-fwh9)で、CVSS は 9.8、評価は Critical です。Active Storage は利用者がアップロードしたファイルを扱う Rails の部品です。画像の処理に使う ImageMagick はファイルの中身を見て読み込みの方式(コーダー)を選び、コーダーの中には画像の中に書かれた別のファイルを扱うものがあります。Active Storage はこれを制限しておらず、ファイルを添付した時点で解析が動くので、画像の加工やプレビューを呼ばなくても添付だけで狙えます。
ログインしていない攻撃者が、サーバーに任意のファイルを書き込めるおそれがあります。添付ファイルを Disk サービスに保存している場合は、アプリが読めるファイルも読まれるおそれがあります。アドバイザリは、secret_key_base や外部システムの認証情報が読まれると、遠隔からのコードの実行や、ほかのシステムへの侵入につながりうると説明しています。
次の3つの条件がそろうと影響を受けます。
config.active_storage.variant_processor = :mini_magickで ImageMagick を使っている(load_defaultsが 6.1 以前のときの既定)- ImageMagick の設定が問題のコーダーを拒否していない(Debian と Ubuntu の既定の設定は拒否していません)
- 信頼できない利用者からのアップロードを受け付けている
mini_magick は 5.1 以降を使うよう案内されています。それより古いと、Rails に同梱の設定を当てたときに起動で例外が出ます。また、ImageMagick で PostScript や PDF を扱っている場合は、サーバーの policy.xml で gs の委譲と必要なコーダーを許可し直す必要があります。
同じ更新で直るほかの欠陥
GHSA-v924-7rp8-4mxh(CVSS 8.8)は動画や音声の解析とプレビュー、ImageMagick での画像の処理の欠陥です。ファイルの拡張子で読み込みの方式が選ばれるため、ファイルを読み取られたり、条件によってはコードを実行されたりするおそれがあります。コードの実行の経路は AviSynth を有効にした FFmpeg を使う場合に限られます。一般的な Linux の配布物の FFmpeg では無効ですが、ffmpeg.org の GPL 版のビルドでは有効です。
GHSA-wm3x-v3qw-4jh3(CVSS 7.5)は許可した項目だけを受け付ける Strong Parameters の仕組みを回避される欠陥です。each_key の戻り値をそのまま一括の保存に使うアプリだけが当てはまり、Rails 自体はこの使い方をしません。
ほかに、送信元の IP アドレスを偽られる欠陥(8.1 系のみ)、サービスを止められる欠陥、画面にスクリプトを埋め込まれる欠陥(XSS)などが含まれています。CVE 番号はどれにも振られていません。
悪用の状況
発表と GitHub のアドバイザリには悪用されたという記載はありません。画像の解析の欠陥は HackerOne を通じて非公開で報告されたものです。
中小企業が確かめること
Rails は委託して作った会員サイトや業務システムに使われていることがあります。プロフィール画像や書類の添付など、外部の人がファイルを上げられる画面のあるシステムは、とくに確かめてください。委託先には Rails のバージョン、画像の処理に ImageMagick を使っているか、添付ファイルの保存先の3点を聞いてください。
自社で確かめること
- Rails のバージョンを確かめるGemfile.lock で rails と activestorage のバージョンを見てください。委託して作ったシステムは委託先に聞いてください。
- 画像の処理の方式を見る設定の config.active_storage.variant_processor が mini_magick かどうか、load_defaults が 6.1 以前かどうかを確かめてください。
- 秘密の値の作り直しを考える添付ファイルをサーバーのディスクに保存しているなら、secret_key_base などアプリが読める秘密の値を作り直してください。
出典
- Ruby on Rails「Rails Versions 8.0.5.2 and 8.1.4.1 have been released!」
- GitHub「Possible arbitrary file write and read in Active Storage image analysis」
- GitHub「Possible arbitrary file read and remote code execution in Active Storage video previews, analysis and image processing」
- GitHub「Possible Strong Parameters bypass in Parameters#each_key in Action Pack」



コメント 0
まだコメントはありません。