OWN NEWS GATHER
← 戻る
The Hacker News

Ruby on Railsに深刻な脆弱性、画像アップロード経由でサーバー内ファイルが読み取られる恐れ

要点

  • Webアプリ開発フレームワーク「Ruby on Rails」の画像処理機能に、サーバー内のファイルを不正に読み取られる深刻な脆弱性(CVE-2026-66066)が判明した。
  • 脆弱性の悪用により暗号化キーやパスワード等の機密情報が流出し、最終的にサーバー上でのリモートコード実行(RCE)につながる恐れがある。
  • 影響を受けるのは、画像処理エンジンに「libvips」を使用し、一般ユーザーから画像アップロードを受け付けるRails 7.0以降などの環境である。
  • 開発元は修正パッチを適用した新バージョンをリリースし、管理者に対して速やかなアップデートと機密情報の再生成(ローテーション)を呼びかけている。

リード文

Ruby on Railsのセキュリティチームは、ファイル管理機能「Active Storage」において、認証されていない第三者がサーバー内の任意のファイルを閲覧できる深刻な脆弱性が発見されたと発表し、修正パッチを公開した。この脆弱性は「CVE-2026-66066」として管理されており、共通脆弱性評価システム(CVSS)のスコアは最高値に近い「9.5(緊急)」と評価されている。ポルトガルのセキュリティ企業Ethiackおよび日本のGMO Flatt Securityの研究者らによってそれぞれ個別に発見・報告された。

影響を受けるシステム環境

今回の脆弱性は、Active Storageの画像処理エンジンとして「libvips(リブビップス:高速な画像処理ライブラリ)」を使用しており、かつ信頼できない一般ユーザーからの画像アップロードを受け入れるアプリケーションが対象となる。Railsではバージョン7.0以降、デフォルトでVipsが選択されるようになっているため、多くの環境が該当する。

具体的に影響を受けるバージョンは以下の通りである。

  • 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.0から6.1.7.10についても、Active StorageでVipsを使用するよう手動設定されている場合にのみ影響を受ける。一方、画像処理に「MiniMagick(ミニマジック:もう一つの主要な画像処理ライブラリ)」を使用しているアプリケーションはこの攻撃経路の影響を受けない。

Ethiackの調査によれば、DebianやUbuntu、およびRailsが公式に生成したDocker環境には、悪用に必要なライブラリがデフォルトで含まれているため、特に脆弱性にさらされやすいという。

ファイル読み取りから「リモートコード実行」への連鎖

本脆弱性を悪用されると、攻撃者は認証を経ることなくサーバー上の任意のファイルを読み取ることが可能になる。さらに深刻なのは、読み取られたファイルから漏洩する機密情報が、二次的な被害をもたらす点にある。

漏洩する可能性がある情報には、Railsプロセスの環境変数や、セッションの暗号化に使用される「secret_key_base」、Railsのマスターキー、データベースの接続パスワード、クラウドストレージの資格情報、APIトークンなどが含まれる。これらが攻撃者に奪取された場合、サーバー上で不正にプログラムを実行する「リモートコード実行(RCE)」や、接続されている他のシステムへの不正侵入(横展開)を許してしまう恐れがある。

脆弱性の公表後、GitHub上には第三者によって作成された実証コード(PoC:脆弱性の有効性を示す簡易プログラム)が公開された。このPoCでは、Rails 8.1.3の環境において、細工されたファイルをアップロードすることで環境変数を読み取り、入手したキーで署名した不正なデータを送信することで、外部サーバーへの接続コマンドを実行させる一連の流れが再現されている。なお、ニュースソースである「The Hacker News」は本PoCの動作確認は行っていないが、Ethiack側はこうした実証コードの存在を認識しているとコメントしている。

技術的背景:なぜ脆弱性が発生したのか

この脆弱性は、Active Storageと画像処理ライブラリ「libvips」の連携部分におけるデータ処理の仕様に起因している。

libvipsは、画像の読み込みや変換など様々な処理をサポートしているが、その一部はサードパーティ製のライブラリに依存している。これらの中には、安全性の検証(ファジング)が十分に行われておらず、悪意あるデータに対して脆弱な「信頼できない」処理が含まれている。

これまでのActive Storageは、これらの安全ではない処理を制限していなかったため、細工されたファイルをアップロードされると、サーバー側のRailsプロセスがその安全でない処理を呼び出してしまい、結果としてサーバー内部のファイルが読み取られてしまう事態につながっていた。

Railsセキュリティチームの解説によると、アプリケーション側で明示的に画像のサイズ変更やサムネイル生成といった個別処理(バリアント生成:画像のサイズ違いを作る処理)を行っていなくても、ファイルの解析や変換の段階で、信頼できないデータが安全でない処理へと渡されるため、アップロード機能を提供するだけで脆弱性が顕在化するという。

推奨される対策と回避策

Railsセキュリティチームは、影響を受けるアプリケーションの管理者に対し、以下の修正済みバージョンへの速やかなアップグレードを強く推奨している。

  • Rails 7.2.3.2 以降
  • Rails 8.0.5.1 以降
  • Rails 8.1.3.1 以降

なお、Rails 7.1以前のバージョンはすでにサポート期限切れ(EOL:製品サポート期間の終了)を迎えているため、個別の修正パッチは提供されない。これらの古いバージョンを使用している場合は、Rails 7.2.3.2以降へのアップグレードが必要となる。

さらに、修正パッチを適用した環境が正常に動作するためには、システムにインストールされている「libvips」がバージョン8.13以降であり、Ruby用のバインディングライブラリである「ruby-vips」を使用している場合は、そのバージョンが2.2.1以降である必要がある。

アップグレードを即座に行うことが難しい場合の暫定的な回避策として、libvips 8.13以降を使用している場合は、環境変数「VIPS_BLOCK_UNTRUSTED」を有効にするか、ruby-vips 2.2.1以降の環境で「Vips.block_untrusted(true)」を呼び出すことで、安全ではないサードパーティ製ライブラリの処理をブロックできる。古いバージョンのlibvipsではこのブロック機能がサポートされていないため、libvips自体をアップデートするか、システムから完全に削除するしかない。

また、すでに本脆弱性によってファイルが読み取られた可能性があるため、管理者はアップグレードの適用と同時に、アプリケーションプロセスがアクセス可能だったすべての機密情報(secret_key_base、マスターキー、データベースの接続情報、クラウドストレージのキー、外部APIトークンなど)を速やかに新しいものへと更新(ローテーション)する必要がある。

現在の状況

Railsセキュリティチームの発表時点において、この脆弱性を悪用した実際の攻撃や、それを試みる不審なアクセスの兆候は確認されていない。また、同チームはActive StorageとVipsを組み合わせてユーザーからの画像入力を受け付けているアプリケーションの具体的な数については、把握していないとしている。

なお、今回の脆弱性を発見した研究チームによる詳細な技術レポートやファイル解析の手法については、混乱を避けるため、遅くとも2026年8月28日までに公開される予定である。

元URL