本文へ移動
English version →
重大 9.8 急ぎ度: 早めに

Rails Active Storageでサーバー読み書き、修正版あり

Ruby on RailsのActive Storageに、画像ファイルを添付する処理を経由してサーバー上のファイルを読み書きされる脆弱性が公表されました。ImageMagickで添付を処理しているアプリは、修正版へ更新してください。

CVE-2026-122006 公開 更新 執筆・監修: 佐々木 航 人が監修しながらAIを活用して執筆
記事のイメージ(生成 AI による画像)
画像は生成 AI で作成したイメージです

急ぎ度: 早めに

CVSS v3は9.8で認証も利用者の操作も要らず、修正版も出ていますが、KEVへの掲載は確認できず、影響はImageMagickで添付を処理する構成に限られます。

関係があるか

Active Storageでファイルのアップロードを受け付け、ImageMagickで画像の解析や変換をしているRailsアプリが対象です。社外の利用者が添付できる公開サービスは、とくに優先して確認してください。

製品影響を受ける版修正版
Active Storage(Ruby on Railsのactivestorage gem)8.0系 8.0.5.2より前(記載は「< 8.0.5.2」で、8.0系より前の版も範囲に入る表記です) 8.0.5.2
Active Storage(Ruby on Railsのactivestorage gem)8.1系 8.1以上8.1.4.1未満 8.1.4.1

確かめ方

  1. 1Gemfile.lockでactivestorageの版を調べ、上の表の範囲に入るか照らし合わせます。
  2. 2config/application.rbと各環境の設定ファイルで、config.active_storage.variant_processorなどActive Storageの画像処理の設定を見て、ImageMagickを使っているかを確認します。
  3. 3本番サーバーにImageMagickが入っているかを確認します。入っていない環境の扱いは、Railsの告知で確かめてください。
  4. 4アプリに、外部の利用者がファイルを添付できる画面やAPIがあるかを洗い出します。

何が起きたか

Ruby on RailsのActive Storageで、ファイルを添付しただけで、サーバー上のファイルを読み書きされるおそれのある脆弱性が公表されました。

Active Storageは、添付されたファイルをImageMagickで自動的に解析することがあります。このとき、ImageMagickに想定外の機能を止めるセキュリティポリシーが設定されていないため、本来は使われないはずの機能が働く余地が生まれます。ベンダーの説明には、読み取られるものの例としてsecret_key_baseが挙げられています。

分類はCWE-1188で、安全でない初期設定に当たります。アプリ側の実装の誤りというより、Rails側の初期状態の問題という位置づけです。

攻撃の流れ

  1. 1

    ファイルを添付

    Active Storageを使うアプリに、ファイルが添付される。

  2. 2

    解析が自動実行

    添付した時点で、ImageMagickによる解析が自動的に動く。

  3. 3

    想定外の機能が動作

    ImageMagickに制限ポリシーがなく、本来は止めるべき機能が働く。

  4. 4

    サーバーを読み書き

    サーバー上のファイルが読み書きされ、secret_key_baseなどが漏れるおそれがある。

公開されている情報をもとにした流れの例です。

どう悪用されるか

認証は不要で、ネットワーク経由で攻撃でき、利用者の操作も要りません(CVSSのベクターはAV:N/AC:L/PR:N/UI:N)。必要なのは、Active Storageにファイルを添付する入口に到達できることと、サーバー側でImageMagickによる解析が動くことです。

悪用された場合の被害は、サーバー上のファイルの読み取りと書き込みです。secret_key_baseが読まれると、アプリが署名や暗号化に使う鍵を握られることになり、署名付きCookieやセッションの信頼が崩れます。書き込みまで可能なため、機密性・完全性・可用性のすべてが高い影響になっています。

今すぐやること

  1. 1

    使っている版を確認する

    本番環境のGemfile.lockで、activestorageの版が影響範囲に入っていないかを確かめます。

    bundle list | grep -i activestorage
  2. 2

    修正版に更新する

    8.0系は8.0.5.2、8.1系は8.1.4.1へ更新します。更新後は、添付とImageMagickを使う処理が従来どおり動くかをテスト環境で確認してから本番に反映します。

  3. 3

    ImageMagickの利用状況を洗い出す

    アプリが実際にImageMagickで添付を処理しているか、サーバーにインストールされているかを確認します。複数のRailsアプリを運用している場合は、アプリごとに調べます。

  4. 4

    ベンダーの告知を読む

    RailsのGitHub上のセキュリティ告知とリリースノートで、影響範囲、8.0系より前の版の扱い、回避策を確認します。

  5. 5

    侵害の跡を調べる

    更新前の期間について、不審なファイルの添付、想定外のエラー、見覚えのないログインやセッションがないかをログで調べます。疑わしい痕跡があれば、secret_key_baseの変更も検討します。

すぐ更新できないとき

すぐに更新できない場合は、ImageMagickにセキュリティポリシーを設定し、不要な機能を使えないようにして、つなぎとします。設定の具体的な内容はRailsの告知で確認してください。あわせて、外部から添付できる入口を一時的に閉じる、または認証済みの利用者だけに絞ると、到達できる範囲を狭められます。いずれも修正版の代わりにはなりません。

背景

Active Storageは、Railsアプリで画像や文書のアップロードを扱う標準の仕組みです。添付ファイルをクラウドストレージに保存するだけでなく、画像の縮小や形式変換、サイズなどの解析も受け持ちます。その画像処理にImageMagickを使う構成があります。

ImageMagickは、細工した画像ファイルを通じてサーバー側の機能を悪用される問題が、2016年のImageTragickのように過去にも広く知られています。この系統の対策としては、ポリシーファイルで使える機能を絞る方法が定番になりました。今回は、Railsが添付した時点で解析を自動で走らせるのに、ポリシーによる制限がない点が問題とされています。画像を扱うコードを自分で書いていないアプリでも、添付を受け付けるだけで影響を受ける構成があり得ます。

よくある質問

Q.更新したあと、secret_key_baseは変更したほうがよいですか。
A.侵害の疑いがなければ、更新だけで構いません。不審な添付やアクセスの痕跡がある場合は、変更を検討してください。変更すると既存のセッションや署名付きCookieが無効になり、利用者は再ログインが必要になります。
Q.RailsをSaaSや委託先のサービスで使っている場合は、どうすればよいですか。
A.自社でGemを更新できないため、提供元に、影響の有無と修正版の適用予定を問い合わせてください。自社データを預けているサービスなら、適用の時期と、侵害の有無の確認結果も合わせて聞いておくと判断しやすくなります。

この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。

影響パッケージ

種類パッケージ影響を受ける版修正版
rubyonrails Active Storage
8.0.5.2 未満
8.1 以上 8.1.4.1 未満
8.0.5.2
8.1.4.1

ディストリビューション別の修正状況

各ディストリビューションが公開している、この CVE の修正パッケージ修正版は配布版ごとに違うので、リンク先で確かめてください。

原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。

The activestorage gem before 8.1.4.1 for Ruby on Rails, when ImageMagick attachment processing occurs, can allow server read and write operations (e.g., reading secret_key_base) because the ImageMagick analyzer runs when a file is attached, and there is not an ImageMagick security policy to block unintended functionality.

出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory

参照URL

当サイトでは、アクセス解析と広告の効果測定のために Cookie を使います。株式会社Game のサイト共通の設定です。 詳しく