Rails の重大な脆弱性、サーバーの秘密情報を露出させリモートコード実行を可能に

Ruby on RailsのActive Storageコンポーネントに新たに公表された脆弱性が、セキュリティコミュニティの深刻な注目を集めています。研究者らが、サーバーの秘密情報の露出からリモートコード実行に至る一連の攻撃チェーンを完全に実証したためです。

CVE-2026-66066(GHSA-xr9x-r78c-5hrm)として追跡されているこの脆弱性は、7.2.3.2より前のActive Storageリリース、および画像処理にVipsバリアントプロセッサを使用している場合の脆弱なRails 8.0および8.1リリースに影響します。

この脆弱性は、Active Storageが画像バリアント処理中にlibvipsとやり取りする方法における、信頼できないローダーの問題に起因しています。

攻撃者は、Active Storageのレプリゼンテーション応答を通じて処理される際に、サーバー上の読み取り可能なファイル内容を復元できるような、直接アップロードblobを細工することが可能です。これは単純な情報漏えいにとどまりません。

攻撃者は十分なデータを抽出すると、復元したRailsの署名用マテリアルからActive Storageの検証キー(verifier key)を導出し、その上で署名済みのImageProcessingバリエーションを偽造して、基盤となるシステム上で任意のコマンドを実行できます

研究者jburgess-r7が提出したMetasploitモジュールが、この脆弱性の実際の深刻さを示しています。このモジュール(exploit/multi/http/rails_activestorage_vips_rce)は、Railsのフォレンジック分析リポジトリに記載された攻撃チェーン全体を実装しています。

このモジュールは、/proc/self/environ、/proc/1/environ、ローカルのRailsシークレットファイル、暗号化された認証情報、そして旧来のsecrets.yml設定など、複数の情報源からの秘密情報復元に対応しています。

このエクスプロイトはSHA-1、SHA-256、SHA-384、SHA-512の各鍵生成方式の組み合わせで動作し、JSON、Marshal、MessagePack互換の署名済みメッセージ形式にも対応しています。

jburgess氏は、特に効果的なエクスプロイト手法として、複数の正方形HDF5レイアウトとVipsのシャープ化反転を組み合わせて使う、リサイズに強い情報窃取(exfiltration)技術を挙げています。この手法は、標的アプリケーションが画像をどのようにリサイズしても確実にデータを抽出できるといいます。

このモジュールは、最新のリダイレクトルートと旧来のRails 6のレプリゼンテーションルートの両方に対応しており、異なるアプリケーションバージョンにまたがって適用可能な範囲を広げています。

Rails 8.0.5およびRails 6.0.6.1を対象とした検証済みのラボテストでは、このエクスプロイトはプロセスの環境変数からSECRET_KEY_BASEの復元に成功し、正しい検証キーを導出した上で、Railsのプロセスユーザー権限で動作するコマンドシェルセッションを開くことができました。

また、テストではパッチ適用済みのRails 8.0.5.1を標的にした場合、このエクスプロイトが安全に失敗することも確認されています。運用者側がSECRET_KEY_BASEを事前に把握していない場合、HTTP 500エラーが返される仕組みです。

注目すべき点として、このモジュールは、当初の発見者が記録していた研究目的のみの技術、具体的には/proc/self/memを使った検証キー復元経路や、instance_evalベースのRCEバリエーションを、意図的に除外しています。

開発者の説明によると、公開されたモジュールで採用されているレプリゼンテーションベースのPNG転送方式は、より大きく、より確実に検証可能な読み取り結果を生成するため、自動化された秘密情報復元に適しており、より限定的なメタデータベースの経路よりも実際のエクスプロイトにおいて優れているとのことです。

Active StorageおよびVipsバリアントプロセッサを使用しているRailsアプリケーションを運用する組織は、直ちにActive Storage 7.2.3.2以降へのパッチ適用を最優先事項とすべきです。

このモジュールが複数のRailsバージョンにわたって実証済みの信頼性を持ち、cmd/unix/reverse_bashやMeterpreterを含むリバースシェルペイロードに対応していることを踏まえると、防御側はこれを理論上の懸念ではなく、重大かつ実際に悪用可能なリスクとして扱うべきです。

SOC調査の死角を減らしましょう。ANY.RUNで脅威を早期に封じ込め、対応コストと事業への支障を軽減します。

翻訳元: https://cyberpress.org/critical-rails-server-secrets-remote-code-execution/

ソース: cyberpress.org