要点
- Ruby on Rails のファイルを扱う部品 Active Storage に欠陥が見つかり、細工したファイルを1つアップロードされるだけで、サーバーに勝手にファイルを書き込まれうる。
- 当たるのは、ImageMagick で画像を扱い、その安全の設定で危ない読み方を止めておらず、だれでもファイルを上げられるアプリで、この3つがそろうとログインしていない攻撃者にも狙われうる。
- Rails は 2026年11月4日に直した版(8.1.4.1 と 8.0.5.2)を出したが、8.0 より古い版には直した版が出ない。
何が起きたか
Rails の開発チームは 2026年11月4日、Active Storage の欠陥についての advisory(安全上の注意の知らせ)を出した。番号は GHSA-f3w6-w445-fwh9 だ。CVE の番号はまだ付いていない。危なさの点数は CVSS(欠陥の重さを0〜10で表す目安)で 9.8、「Critical(重大)」とされている。
Active Storage は、利用者が上げた画像やファイルを保存し、扱うための Rails の部品だ。画像の大きさを調べたり、縮小した画像を作ったりするのに、外のソフトの ImageMagick を呼ぶことがある。
攻撃者に要るのは、細工したファイルを1つ上げることだけだ。Active Storage は、ファイルが添付されるとすぐに、その画像の情報を調べに行く。縮小画像を作るといった操作を待たずに、ImageMagick がファイルを開くことになる。ImageMagick は、ファイルの形式を中身から判断する。形式によっては、画像そのものではなく、画像の中で指定された別のファイルを読み書きする。advisory によると、Active Storage はそうした形式を使わせない手立てを取っていなかった。その結果、サーバーにファイルを書き込まれるおそれがあった。
保存先がサーバーのディスク(Disk サービス)の場合、被害は書き込みだけにとどまらない。アプリの権限で読めるファイルを、攻撃者に読まれるおそれもある。advisory が例に挙げるのは、secret_key_base(Rails がログインの情報などを守るのに使う秘密の鍵)と、外のサービスにつなぐための認証情報だ。これらが漏れると、サーバーで勝手にプログラムを動かされたり、つながったほかのシステムに入り込まれたりしうるという。
報告したのは、HackerOne(欠陥を報告して報酬を受ける仕組み)の研究者 ryotak だ。Rails のチームは、報告された攻撃の道筋が唯一のものとは考えていないとしている。advisory には、実際に悪用されたという記述はない。
同じ日に、もう1つの欠陥(GHSA-v924-7rp8-4mxh、CVSS 8.8)も直された。上げたファイルの名前の拡張子で、動画や画像を扱うソフトの読み方を攻撃者が選べてしまうものだ。こちらは研究者 pirikara が報告した。
日本の利用者への影響
日本でどれだけ当たるアプリがあるか、日本の組織に被害が出ているかは、資料からは分からない。
当たるかどうかは、アプリの作りで決まる。advisory によると、次の3つが全部そろうと当たる。
- 画像の処理に ImageMagick を使っている(古い設定のまま作られたアプリでは、これが標準)
- ImageMagick の安全の設定が、危ない読み方を止めていない(Debian や Ubuntu が配る設定では止まっていないとされる)
- 知らない人からのファイルのアップロードを受け付けている
新しめの設定で作ったアプリは、標準では別の画像ソフト(libvips)を使う。この場合、1つ目の条件に当たらない。
今すぐやること
- 自社や取引先のサービスに Rails で作ったものがあるか、開発の担当者や委託先に確かめる。
- 画像のアップロードを受け付けていて、ImageMagick を使っているかを確かめてもらう。
- 当たるなら、Rails を 8.1.4.1 か 8.0.5.2 に上げる。8.0 の安全のための修正は 2026年11月7日で終わるので、Rails のチームの方針に沿って 8.1 への移行も考える。
- すぐ上げられないときは、Rails のチームの勧めに沿って、ImageMagick の設定で危ない読み方を止める。
- 保存先がサーバーのディスクなら、Rails のチームは、秘密の鍵や、アプリが読めるパスワード・認証情報をすべて新しいものに変えるよう勧めている。
背景
ImageMagick は多くの形式を読めるぶん、中にはファイルを読み書きする機能を持つ形式もある。2016年には「ImageTragick」と呼ばれる一連の欠陥が見つかり、多くの Web サービスが急いで対策した。その時から、ImageMagick の安全の設定(policy.xml)で危ない形式を止めることが勧められてきた。
今回の advisory は、欠陥の種類を「安全でない初期設定」としている。Active Storage が ImageMagick の初期設定をそのまま使っていたことが原因だ。直した版では、Rails が自分で安全の設定を持ち込む。
Rails では 2026年7月にも、別の画像ソフト libvips を使う経路の欠陥(CVE-2026-66066)が直されている。
技術者向けの詳細
- 対象:
activestorage8.1 以上 8.1.4.1 未満、8.0.5.2 未満(8.0 より古い系列は直した版が出ない) - 直した版: 8.1.4.1、8.0.5.2。すぐ上げられない場合の修正コミット: 468aa9a(8.1)、ea8c401(8.0)
- 条件:
config.active_storage.variant_processor = :mini_magick(load_defaults 6.1以前の標準)/ImageMagick の policy が該当の coder を拒否していない/信頼できない利用者のアップロードを受け付ける。添付だけで解析が走る - 直した版で
:mini_magickを使うなら mini_magick 5.1 以上が要る(古いと起動時に例外) - 当たるかの確かめ方の例:
grep -E '^ (activestorage|mini_magick) ' Gemfile.lock
grep -rn 'variant_processor\|load_defaults' config/
magick -list policy # ImageMagick 6 なら convert -list policy
- 上げられないときの回避策(advisory): 同梱の
activestorage/lib/active_storage/image_magick/policy.xmlの規則を、システムの policy(例/etc/ImageMagick-7/policy.xml)に写す。最低でもMSLcoder、gsdelegate、Ghostscript を使う coder(PS・PDF・EPS・XPS・PCL など)を拒否する - 同梱の policy は
MiniMagick.cli_env経由で渡される。そのため、次のどれかに当たるアプリでは効かず、規則を host 側の policy に置く必要がある: 起動後のcli_envの上書き/cli_prefixによる環境の除去/独自のMiniMagick::Shell。GraphicsMagick は ImageMagick の policy を読まないので、この仕組みの外になる - 同梱の policy は
gsと Ghostscript 系の coder を拒否する。ImageMagick で PostScript・PDF を描画しているアプリは、host のpolicy.xmlで、使うものだけを許可し直す - Disk サービスを使うアプリ: アプリのプロセスが読める秘密は、すべて入れ替えの対象(例:
config/credentials.yml.encの中身と master key、secret_key_base、DB やストレージ、外部サービスの認証情報)。古い値は残さない。詳しくは advisory の Mitigation を参照 - 関連の GHSA-v924-7rp8-4mxh(CVSS 8.8、要ログイン相当の PR:L): 一時ファイルが元の拡張子を保つため、ffprobe・ffmpeg・ImageMagick の読み方を拡張子で選ばれうる。AviSynth を有効にした FFmpeg(ffmpeg.org の GPL ビルドなど)では、ファイルの読み出しやコード実行のおそれ。回避策は
VideoPreviewer・VideoAnalyzer・AudioAnalyzerを外すこと。修正コミット 72136ff(8.1)、8106938(8.0)



