Ruby on Rails は、認証されていない攻撃者が不正に作成された画像アップロードを介してアプリケーションサーバーから任意のファイルを読み取ることを可能にする重大な Active Storage の脆弱性に対してセキュリティ更新をリリースしました。CVE-2026-66066 として追跡され、CVSS スケールで 9.5 と評価されています。この欠陥により、Rails プロセスからアクセス可能な秘密情報が漏えいし、リモートコード実行や接続されたシステムへの横方向移動が可能になる可能性があります。
この問題は、Active Storage と libvips の相互作用に起因しています。libvips は、load_defaults 7.0 およびそれ以降のデフォルトを使用する Rails アプリケーションによって選択された画像処理ライブラリです。信頼されていないユーザーからの画像アップロードを受け入れるデフォルトの Rails 設定では、libvips の安全でない操作が悪意のあるファイルを処理して、アップロードされた画像を介して決してアクセスできないはずのデータを開示する可能性があります。
CVE-2026-66066 の最も重要な詳細は、潜在的に漏えいする情報の感度に関するものです。攻撃者は、Rails プロセス環境、secret_key_base、Rails マスターキー、データベースの認証情報、クラウドストレージのキー、サードパーティの API トークンを取得する可能性があります。取得した秘密情報に応じて、攻撃は任意のファイル開示からセッション偽造、アプリケーションの侵害、または外部インフラストラクチャへのアクセスに進む可能性があります。
CVE-2026-66066 分析
この脆弱性は、アプリケーションが libvips を使用する場合の Active Storage バリアント処理にあります。libvips は、ファイル形式を処理するための多数のローダー、セーバー、およびその他の操作をサポートしています。これらの操作の一部はサードパーティのライブラリに依存しており、安全でない入力を処理するには不適切であるため、「ファズされていない」または信頼できないと分類されています。
Active Storage は、アップロードされた添付ファイルを Vips アナライザとトランスフォーマーに渡す前に、これらの操作をブロックしませんでした。その結果、作成されたアップロードは安全でない操作を引き起こし、Rails ワーカーが読み取ることができる任意のファイルの内容を取得する可能性があります。
最も深刻なシナリオでは、攻撃者は画像アップロードを通じてサーバーファイルを読み取り、アプリケーション環境からセンシティブな値を回復します。この欠陥は、特定のサイズ変更やサムネイル機能を公開する必要はありません。Rails アドバイザーによれば、画像バリアントを生成することは、アプリケーションが脆弱であるための独立した要件ではありません。
CVE-2026-66066 は、次の両方の条件を満たすアプリケーションに影響を与えます。
- 通常、config.active_storage.variant_processor = :vips を介して、Active Storage の画像処理に libvips を使用しています。
- 信頼されていないユーザーが画像をアップロードすることを許可しています。
影響を受ける範囲として報告されているのは、Rails 7.0.0 から 7.2.3.1、Rails 8.0.0 から 8.0.5、および Rails 8.1.0 から 8.1.3 までです。Rails 6.0 および 6.1 のアプリケーションも、管理者が Vips を画像処理エンジンとして明示的に構成する場合に公開される可能性がありますが、これらのリリースではデフォルトではありませんでした。Vips の代わりに MiniMagick を使用するアプリケーションは、この特定の攻撃パスを通じて公開されません。
任意のファイル読み取りが達成されると、攻撃者は次のターゲットとする可能性があります。
- secret_key_base
- config/master.key または RAILS_MASTER_KEY 環境変数
- config/credentials.yml.enc から復号された秘密情報
- データベースのユーザー名とパスワード
- Amazon S3、Google Cloud Storage、または Azure ストレージのキー
- 支払い、メッセージング、モニタリング、その他のサードパーティーサービスのトークン
secret_key_base を取得することは特に危険です。Rails はこれを使用して署名済みおよび暗号化されたアプリケーションデータを保護します。アプリケーションと利用可能なガジェット チェーンに応じて、盗まれた値により、攻撃者が信頼されたデータを偽造し、潜在的にコードの実行に進行することが可能になります。クラウドまたは API 資格情報も、侵害された Rails サーバーを超えた横方向の動きをサポートする可能性があります。
第三者の CVE-2026-66066 の PoC は、調整された開示の直後に登場し、隔離された Docker 環境での任意ファイル読み取りから RCE へのチェーンを再現すると主張しています。Hacker News は、当初の公開報告時点でそのコードを独立して検証していませんでしたが、元の研究チームは管理者がパッチを適用する時間を確保するために詳細なエクスプロイト手法は意図的に公開していませんでした。
現在、ベンダー発行の CVE-2026-66066 に関する IOC や、野生環境での悪用の確認済み報告はありません。Rails セキュリティチームは、開示の前後で悪用の試みについて知られているものはないと述べていますが、知られている攻撃の欠如が公開されているアプリケーションが安全であることの証拠と解釈されるべきではありません。
CVE-2026-66066 減少策
管理者は、次の修正版の Active Storage にアップグレードすべきです。
- Rails 7.2.3.2 以降
- Rails 8.0.5.1 以降
- Rails 8.1.3.1 以降
Rails 7.0 と 7.1 はもはやセキュリティサポートを受けておらず、バックポートされた修正は受け取れません。これらのブランチを運用しているアプリケーションは、Rails 7.2.3.2 以上のサポートされたリリースに移行するべきです。
パッチ適用された構成でも libvips 8.13 以上が必要です。ruby-vips gem を直接使用しているアプリケーションは ruby-vips 2.2.1 以上を実行する必要があります。修正は Active Storage 初期化中に Vips.block_untrusted(true) を呼び出すことで、不正な libvips 操作が悪意のあるアップロードを処理するのを防ぎます。
更新は脆弱な処理経路を閉じますが、既に漏洩しているかもしれない秘密情報を無効化することはありません。組織は、Rails アプリケーション プロセスによって読み取り可能なすべての値を潜在的に侵害されたものとして扱い、ローテーションする必要があります。これには、アプリケーションの署名の秘密情報、マスターキー、データベース資格情報、ストレージ サービスキー、およびサードパーティのトークンが含まれます。
secret_key_base を変更すると、アクティブなセッションが無効になり、ユーザーは再度サインインする必要があります。また、暗号化されたクッキー、署名済みクッキー、署名済みのグローバル ID、および以前に発行された Active Storage URL にも影響します。管理者は、ローテーション後に露出された秘密情報をフォールバックとして保持しないようにすべきです。
即座に Rails をアップグレードすることが不可能な場合、libvips 8.13 以上を使用するアプリケーションは、以下の環境変数を設定できます。
VIPS_BLOCK_UNTRUSTED
ruby-vips 2.2.1 以上を使用するアプリケーションは、代わりに以下の呼び出しを初期化子に追加できます。
Vips.block_untrusted(true)
libvips 8.13 より古いバージョンは、安全でない操作をブロックすることができません。それらの環境では、安全な構成のみの回避策はありません。管理者は libvips をアップグレードするか、必要がない場合は Gemfile から ruby-vips の依存性を削除する必要があります。
CVE-2026-66066 の検出は、Active Storage、Vips、および信頼されていない画像アップロードを使用しているアプリケーションのリストを作成することから始めるべきです。セキュリティチームは、異常なアップロード活動、予期しない画像フォーマット、バリアント処理エラーの繰り返し、および疑わしいセッションまたは資格情報の使用に続くリクエストを確認するために、アプリケーションおよびプロキシログをレビューするべきです。
CVE-2026-66066 の露出を検出するために、チームは Active Storage、libvips、および ruby-vips の正確なバージョンを確認し、主要な Rails バージョンにのみ依存しないようにすべきです。さらに、Rails プロセスが利用可能な認証情報を含む不正アクセスの証拠がないかどうかをアプリケーションを確認するべきです。
FAQ
CVE-2026-66066 とは何であり、どのように機能するのか?
CVE-2026-66066 は Ruby on Rails Active Storage における重大な任意ファイル読み取りの脆弱性です。Active Storage は攻撃者が制御するアップロードを処理するための安全でない libvips 操作を許可しており、認証されていないユーザーが Rails アプリケーションプロセスで読み取れるファイルを取得することを可能にしています。盗まれたアプリケーションの秘密がリモートコード実行や横方向移動をサポートする可能性があります。
CVE-2026-66066 はいつ初めて発見されましたか?
非公開の発見日は公にされていません。この問題は、Ethiack と GMO Flatt Security の研究者によって独自に報告され、Rails のセキュリティアドバイザリは 2026 年 7 月 29 日に公開されました。
CVE-2026-66066 のシステムへの影響は何ですか?
直接の影響は任意ファイルの開示です。攻撃者はアプリケーションの署名の秘密情報、Rails の認証情報、データベースのパスワード、クラウドストレージのキー、またはサードパーティのトークンを入手する可能性があります。漏洩したデータとアプリケーション設定に応じて、妥協はセッション偽造、リモートコード実行、または接続されたサービスへのアクセスにエスカレートする可能性があります。
CVE-2026-66066 は 2026 年においても影響を与える可能性がありますか?
はい。Rails アプリケーションは、脆弱な Active Storage バージョンを使用し、libvips で画像を処理し、信頼できないユーザーからアップロードを受け入れる場合には引き続き公開されています。寿命終了の Rails 7.0/7.1 アプリケーションもリスクにさらされており、サポートされているブランチにアップグレードする必要があります。
CVE-2026-66066 からどのように自分を守ることができますか?
Rails 7.2.3.2、8.0.5.1、8.1.3.1、またはそれ以降のリリースにアップグレードし、libvips がバージョン 8.13 以降であることを確認し、該当する場合は ruby-vips 2.2.1 以降を使用してください。アプリケーションプロセスで利用可能なすべての秘密をローテーションし、悪用の可能性があるアップロードの動作をレビューしてください。