コンテンツへスキップ
ホーム » 画像アップロードを悪用してサーバーファイルを読み取るRuby on Rails脆弱性:CVE-2026-66066分析

画像アップロードを悪用してサーバーファイルを読み取るRuby on Rails脆弱性:CVE-2026-66066分析

2026年7月、Ruby on RailsのActive Storageにおいて、信頼できないユーザーが画像をアップロードできる環境を対象に、サーバー内部ファイルを読み取ることができる深刻な脆弱性CVE-2026-66066が公開されました。この脆弱性はCVSS 9.5(Critical)と評価されており、細工された画像ファイルをアップロードすることで、Railsアプリケーションプロセスがアクセス可能な任意のファイルを読み取れる構造です。

攻撃に成功した場合、secret_key_base、Rails Master Key、データベースパスワード、クラウドストレージ認証情報、APIトークンなど、アプリケーションが使用する主要なシークレット情報が露出する可能性があります。漏えいした情報は、単なるサーバーファイルの露出にとどまらず、署名済みデータの偽造、接続されたデータベースおよびクラウド環境へのアクセス、追加の脆弱性と組み合わせたリモートコード実行につながる可能性があります。

今回の脆弱性は、Active Storageがユーザーから送信されたContent-Typeを基準にアップロードファイルを画像として判断する一方で、実際の画像処理を担当するlibvipsが、ファイル内部の構造に基づいてローダーを選択する過程で発生します。攻撃者は、MATLABおよびHDF5形式で細工したファイルを正常な画像に見せかけてアップロードし、libvipsにそのファイルを処理させることで、サーバー内部ファイルを読み取ることができます。

本記事では、Ruby on Rails Active Storageで発見されたCVE-2026-66066の技術的原因と攻撃フローを分析し、Criminal IPキーワード検索を活用して、インターネット上で観測されるActive Storage関連資産を確認します。

CVE-2026-66066脆弱性の概要

CVE-2026-66066は、Ruby on RailsのActive Storageがlibvipsを利用してアップロードされた画像を処理する過程で発生する任意ファイル読み取りの脆弱性です。攻撃者が細工したファイルを画像に見せかけてアップロードすると、Railsプロセスが読み取れるサーバーファイルが露出する可能性があり、これには/proc/self/environを通じてアクセス可能なプロセス環境情報も含まれる可能性があります。

項目内容
脆弱性IDCVE-2026-66066
影響を受ける構成要素Ruby on Rails Active Storage
脆弱性の種類任意ファイル読み取り
影響の拡大認証情報の窃取に伴うリモートコード実行および横展開の可能性
CVSS v4.09.5, Critical
攻撃条件Active Storageでlibvipsを使用し、外部ユーザーによる画像アップロードを許可していること
影響を受けるバージョン7.2.3.2未満
8.0以上8.0.5.1未満
8.1以上8.1.3.1未満
修正バージョン7.2.3.2
8.0.5.1
8.1.3.1
主な影響サーバー内部ファイルおよびプロセス環境情報の露出、認証情報の窃取、追加攻撃によるリモートコード実行の可能性

主な影響対象は、脆弱なActive Storageバージョンで画像処理プロセッサとしてlibvipsを使用し、信頼できない外部ユーザーによる画像アップロードを許可している環境です。Rails 6.xも、Active Storageの画像処理プロセッサとしてlibvipsを個別に設定している場合は影響を受ける可能性があります。また、セキュリティサポートが終了しているRails 7.1以下のバージョンは、サポート対象バージョンへアップグレードする必要があります。

一方、MiniMagickまたはImageMagickを使用している環境は、今回公開された特定の攻撃経路の直接的な影響対象ではありません。ただし、別途サムネイル生成や画像編集機能を提供していない場合でも、Active Storageの画像分析プロセスで脆弱な処理経路が実行される可能性があります。そのため、ファイルアップロード機能を運用しているRailsアプリケーションでは、設定とパッチ適用状況を確認する必要があります。

攻撃に成功した場合、secret_key_base、Rails Master Key、データベースアカウント、クラウドストレージアクセスキーなどのシークレット情報が露出する可能性があります。したがって、直接的な影響は任意ファイル読み取りですが、窃取された情報とアプリケーション構成によっては、署名データの偽造、接続システムへのアクセス、リモートコード実行へと被害が拡大する可能性があります。

脆弱性の発生原因と攻撃フロー

CVE-2026-66066は、Active Storageとlibvipsがアップロードファイルの形式を異なる方法で判断する過程で発生します。Active Storageは、アップロードリクエストに含まれるContent-Typeを基準に、ファイルが画像であるかどうかを判断できます。攻撃者が細工したファイルのContent-Typeをimage/pngなどに指定すると、Active Storageは実際の内部構造とは関係なく、そのファイルを画像処理の対象として分類する可能性があります。

一方、実際の画像処理を担当するlibvipsは、Content-Typeではなく、ファイル内部のヘッダーやバイト構造を分析して使用するローダーを選択します。攻撃者はこの違いを悪用し、MATLABおよびHDF5形式で構成されたファイルを正常な画像に見せかけてアップロードできます。

今回の攻撃に使用されるMATLAB MAT v7.3ファイルは、内部的にHDF5形式を使用しています。HDF5は、データが別のファイルに保存されていることを指定するExternal Storage機能をサポートしています。攻撃者はこの機能にサーバー内部ファイルのパスを入力し、libvipsにそのファイルを読み取らせることができます。

CVE-2026-66066脆弱性におけるファイル処理過程と攻撃フロー

攻撃フローは次のとおりです。

  1. HDF5 External Storage機能にサーバー内部ファイルのパスを含めた細工ファイルの作成
  2. ファイルのContent-Typeをimage/pngなどに指定し、Active Storageへ正常な画像としてアップロード
  3. Active Storageによるアップロードファイルの画像判定と、分析または変換処理のためのlibvipsへの受け渡し
  4. libvipsによる実際のファイル構造の確認、MATLABファイルローダーの実行、および内部HDF5設定に基づく指定サーバーファイルの読み取り
  5. 参照先サーバーファイルの内容がlibvipsによって読み取られ、処理結果に反映される可能性、攻撃者による生成済みActive Storage結果ファイルの取得と内容の回収

この過程で攻撃者がアクセスできる範囲は、Railsアプリケーションプロセスのファイル読み取り権限によって異なります。/proc/self/environのようなプロセス環境情報やアプリケーション設定ファイルを読み取れる場合、secret_key_base、Rails Master Key、データベースアカウント、クラウドサービス認証情報が露出する可能性があります。

Railsのセキュリティパッチでは、Active Storageの初期化過程で、libvipsの信頼できない処理をブロックするよう変更されています。これにより、外部ファイルアクセスなど、信頼できないアップロードファイルから実行されるべきではないローダーや処理が制限されます。

Criminal IPキーワード検索によるActive Storage関連資産の分析

Ruby on Rails Active Storageは、機能に応じて異なるデフォルトURLパスを使用します。

  • /rails/active_storage/は、Active Storage全般で使用される基本パスです。
  • /rails/active_storage/representations/は、画像のリサイズ、フォーマット変換、文書プレビューなど、変換後の結果を提供する際に使用されます。

これらのパスがHTMLやHTTPレスポンスに含まれる資産を検索することで、Active Storageを使用していると推定されるインターネット露出アプリケーションを識別できます。

Active Storage基本パスの検索

Criminal IP IT資産検索で/rails/active_storage/キーワードを検索した結果

Criminal IP 検索クエリ: /rails/active_storage/

Criminal IP IT資産検索で/rails/active_storage/キーワードを検索した結果、2026年8月4日時点で合計288件の資産が確認されました。検索結果の一部では、オンラインカジノやギャンブル関連のWebサイトが確認されました。個別WebページのHTMLレスポンスを確認したところ、バナー画像や添付ファイルを提供するURLに/rails/active_storage/blobsパスが使用されている事例も確認されました。これは、該当アプリケーションでActive Storageが実際のファイル配信に使用されていることを示しています。

画像変換パスの検索

Criminal IP IT資産検索で/rails/active_storage/representations/キーワードを検索した結果

Criminal IP 検索クエリ: /rails/active_storage/representations/

Criminal IP IT資産検索で/rails/active_storage/representations/キーワードを検索した結果、2026年8月4日時点で合計71件の資産が確認されました。representationsパスは、Active Storageが元ファイルを画像Variantやプレビュー形式に変換した結果を提供する際に使用されます。そのため、このパスがHTMLまたはHTTPレスポンスで観測される場合、該当アプリケーションでActive Storageベースの画像変換機能が使用されている可能性があります。

CVE-2026-66066は、アップロードファイルがActive Storageからlibvipsへ渡される画像分析および変換処理に関連しています。そのため、representationsの検索結果は、Active Storage関連資産全体の中から、画像処理構成を優先的に確認すべき候補を絞り込む際に活用できます。ただし、representationsパスの外部露出は脆弱性成立の必須条件ではないため、このパスが確認されないアプリケーションも点検対象から除外すべきではありません。

個別資産で確認されたActive Storageの使用痕跡

検索結果に含まれる個別資産のHTMLおよびHTTPレスポンスを確認した結果、一部のサービスでは、/rails/active_storage/blobsおよび/rails/active_storage/representations/パスが実際の画像配信に使用されていました。

個別のWebサイトでActive Storage画像が配信されている画面

あるWebサイトでは、次のようなサーバー構成が確認されました。

  • Server: Apache/2.4.58 (Ubuntu)
  • X-Powered-By: Phusion Passenger 6.1.2

Phusion Passengerは、RubyおよびRailsアプリケーションをApacheやNginx環境で実行するために使用されるアプリケーションサーバーです。また、HTMLレスポンス内でblobsとrepresentationsの両方のパスが確認されており、該当サービスがActive Storageを通じて元ファイルと変換後の画像を配信していることが確認できました。

実際に画像へアクセスしたところ、/rails/active_storage/disk/パスからファイルが返されていました。

また、別の日本語サービスでも、/rails/active_storage/representations/redirect/パスが画像配信に使用されている事例が確認されました。該当サービスでは、ログイン機能と会員登録機能も提供されていました。

個別サービスのHTMLでrepresentationsパスが確認された画面

会員登録機能があるだけで、外部ユーザーによる画像アップロードが可能であると断定することはできません。ただし、認証済みユーザーがコンテンツやプロフィール画像を投稿できる構造であれば、CVE-2026-66066の攻撃条件に関連する可能性があるため、実際のファイルアップロード機能と権限ポリシーを追加で確認する必要があります。

Criminal IPキーワード検索は、このようにActive Storageの使用痕跡や画像変換パスが外部から確認できる資産を識別する出発点として活用できます。

点検および対応策

CVE-2026-66066の影響を受ける可能性があるRailsアプリケーションでは、バージョン、画像処理構成、ファイルアップロード機能、シークレット情報の露出有無をあわせて確認する必要があります。

1. 修正バージョンへのアップデート

影響を受けるバージョンは、以下の修正バージョン以上へアップデートします。

  • Rails 7.2.3.2
  • Rails 8.0.5.1
  • Rails 8.1.3.1

Rails 7.1以下のバージョンはセキュリティサポートが終了しているため、サポート対象バージョンへのアップグレードを検討します。Rails 6.xについても、Active StorageでVipsを個別に使用している場合は、影響有無を確認します。

2. libvips構成の確認

Active Storageが画像処理にlibvipsを使用しているかを確認し、関連パッケージを最新バージョンに維持します。

直ちにRailsをアップデートできない場合、libvips 8.13以上ではVIPS_BLOCK_UNTRUSTED環境変数を適用できます。ruby-vips 2.2.1以上をあわせて使用している場合は、初期化コードでVips.block_untrusted(true)を呼び出すこともできます。libvips 8.13未満では信頼できない処理をブロックできないため、libvipsへの依存を削除するか、パッチ適用が可能な構成へ切り替える必要があります。

3. ファイルアップロード検証の強化

クライアントが送信したContent-Typeだけを信頼せず、実際のファイルヘッダーや内部構造もあわせて確認します。サービスに必要な画像形式のみを許可し、ファイルサイズと解像度も制限します。
画像処理プロセスには、必要最小限のファイルシステムアクセス権限のみを付与することが適切です。

4. 外部露出資産の識別

Criminal IP IT資産検索などの検索エンジンを活用し、Active Storage関連資産を探索できます。
検索結果から自社管理対象の資産を識別したうえで、Railsバージョン、libvipsの使用有無、外部アップロード機能、パッチ適用状況を確認します。

5. シークレット情報および侵害痕跡の確認

脆弱な環境として運用されていた履歴がある場合は、secret_key_base、Rails Master Key、データベースアカウント、クラウドアクセスキー、APIトークンのローテーションを検討します。

また、アプリケーションログとActive Storageストレージを調査し、不審な画像アップロード、MATLAB MAT v7.3またはHDF5形式のファイル、繰り返し発生した画像分析・変換リクエストがなかったかを確認します。データベースやオブジェクトストレージに、不審なアップロードファイルや生成された処理結果が残っていないかもあわせて点検します。

FAQ

Q1. Active Storageを使用しているすべてのRailsアプリケーションが脆弱ですか?

主な影響対象は、脆弱なActive Storageバージョンで画像処理プロセッサとしてlibvipsを使用し、信頼できない外部ユーザーによるファイルアップロードを許可している環境です。

Active StorageのVariantプロセッサとしてMiniMagick/ImageMagickを使用している構成は、今回のlibvipsベースの攻撃経路の直接的な影響対象ではありません。ただし、アプリケーションの実際の設定、依存関係、別の画像処理経路については追加で確認する必要があります。

Q2. パッチを適用するだけで対応は完了しますか?

脆弱な構成で運用されていた期間に、secret_key_base、Rails Master Key、データベースアカウント、クラウド認証情報が露出した可能性も検討する必要があります。

影響を受けた可能性がある場合は、関連するシークレット情報をローテーションし、ログをもとに侵害痕跡を調査する必要があります。

Q3. 任意ファイル読み取りがどのようにリモートコード実行につながるのですか?

任意ファイル読み取り自体は、直ちにコマンド実行を意味するものではありません。

しかし、アプリケーションのsecret_key_baseや管理アカウント、データベースおよびクラウド認証情報が露出した場合、攻撃者は署名済みデータを偽造したり、接続されたシステムにアクセスしたりできる可能性があります。アプリケーション構成や別の脆弱性と組み合わさることで、リモートコード実行へと被害が拡大する可能性があります。

結論

CVE-2026-66066は、Active Storageがアップロードファイルを画像として分類する方法と、libvipsが実際のファイル構造を解釈する方法の違いを悪用した任意ファイル読み取りの脆弱性です。攻撃者は、MATLAB MAT v7.3およびHDF5 External Storage機能を利用して、細工したファイルを正常な画像に見せかけ、Railsアプリケーションプロセスがアクセス可能なサーバーファイルやプロセス環境情報を読み取ることができます。

直接的な影響は任意ファイル読み取りですが、secret_key_base、Rails Master Key、データベースアカウント、クラウドアクセスキーなどのシークレット情報が露出した場合、署名済みデータの偽造、接続システムの侵害、横展開、リモートコード実行へと被害が拡大する可能性があります。そのため、影響を受ける可能性がある環境では、修正バージョンへアップデートし、libvipsの構成と外部画像アップロード機能を確認する必要があります。脆弱な状態で運用されていた履歴がある場合は、パッチ適用にとどまらず、Active Storageストレージとアプリケーションログを調査し、露出した可能性のある認証情報をローテーションする必要があります。

今回の検索結果に含まれる資産が、必ずしもCVE-2026-66066に対して脆弱であることを意味するわけではありません。ただし、Active Storageの使用有無や画像変換機能の外部露出痕跡を確認し、優先的に点検すべき資産を選別するための参考指標として活用できます。実際の影響有無を判断するには、Railsバージョン、libvipsの使用有無とバージョン、外部ユーザーによる画像アップロードの可否、パッチ適用状況を追加で確認する必要があります。

関連して、ログインなしでサーバーを掌握する脆弱性:TeamCity On-Premises CVE-2026-63077分析 の記事も参考にできます。

Criminal IP(criminalip.io/ja/register)に登録すると、すぐに脆弱資産の検知を開始できます。さらに、下記ボタンからデモをご依頼いただくことで、エンタープライズ環境において外部に露出した資産を対象としたCriminal IP の脅威インテリジェンス(TI)分析を直接ご確認いただけます。


本レポートは、サイバー脅威インテリジェンス検索エンジン Criminal IP のデータを基に作成されています。
今すぐCriminal IP の無料アカウントを作成すれば、本レポートで引用された検索結果を直接確認したり、さらに膨大な脅威インテリジェンスを自由に検索することができます。 

データソース: Criminal IP(https://www.criminalip.io/ja), TheHackerNews(https://thehackernews.com/2026/07/critical-rails-flaw-could-let.html)

関連記事: https://www.criminalip.io/ja/knowledge-hub/blog/9682

コメントを残す

Criminal IP(クリミナルアイピー)をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む