深刻なRailsの脆弱性、攻撃を受けるサーバーが脱線の危機に

Railsに深刻な脆弱性が見つかりました。影響を受けるWebサーバーが「脱線」しかねない状況です。

Rails(Ruby on Rails)は、Ruby上に構築されたWebアプリケーションフレームワークです。コンポーネントの1つであるActive Storageはファイルのアップロードを扱い、アップロードされた画像の解析に画像処理スイートのImageMagickを利用できます。ところが、この仕組みに欠陥があり、攻撃者がImageMagick経由でWebサーバー上に任意のファイルを書き込めるようになっています。

この脆弱性は「GHSA-f3w6-w445-fwh9」として追跡されており、CVSSスコアは9.8の「重大」です。細工した画像ファイルをアップロードするだけで、攻撃者は任意のファイルの書き込みや機密ファイルの読み取りが可能になり、secret_key_baseファイルなどのシークレット、外部システムの認証情報、データベースのパスワード、サードパーティのトークンにもアクセスできるためです。これらの情報を悪用されると、外部システムへの横展開(ラテラルムーブメント)やリモートコード実行につながるおそれがあります。

Railsのメンテナーが公開したGitHubのセキュリティアドバイザリは、次のように説明しています。「ImageMagickで添付ファイルを処理するRailsアプリケーションでは、認証されていない攻撃者がサーバー上に任意のファイルを書き込める可能性があります。さらに、添付ファイルをDiskサービスに保存している場合は、アプリケーションのプロセスが読み取れる任意のファイルを読み取られるおそれがあります」

画像アップロードが攻撃経路になる仕組み

この脆弱性が生じるのは、ImageMagickがファイルの処理方法(どのコーダーを使うか)を、必ずしもファイル名や拡張子ではなく、内容に基づいて判断するためです。攻撃者は「maliciousfile.jpeg」という名前でありながら、ImageMagickに別のコーダーを呼び出させる内容を含む画像ファイルをアップロードできます。その結果、サーバー上で任意のファイルの読み取りや書き込みが行われる可能性があります。

脆弱性の影響を受けるActive Storageは、8.0系では8.0.5.2より前のバージョン、8.1系では8.1.4.1より前のバージョンです。影響を受けるのは、Active Storageの画像処理にImageMagickを使うRailsアプリケーションのうち、該当するコーダーをブロックしないセキュリティポリシーで運用し、かつ信頼できないユーザーからのアップロードを受け付けている組織です。

Active Storageのパッチはすでに公開されています。GitHubのページには、MiniMagickとImageMagickを使うアプリケーション向けの追加の緩和策も記載されています。

加えて、アプリケーションがDiskサービスで添付ファイルを保存している場合、ユーザーは「secret_key_baseと、アプリケーションのプロセスが読み取れるすべてのシークレットを変更する必要があります。これにはマスターキー、config/credentials.yml.encに含まれるすべての情報、ストレージやデータベースの認証情報、サードパーティのトークンが含まれます」とGitHubのアドバイザリは述べています。漏えいした可能性のあるシークレットを、予備として残しておくべきではありません。

すぐにパッチを適用できない場合の回避策として、GitHubのページにはImageMagickのシステムポリシーに適用できるルールが掲載されています。

エクスポージャー管理ベンダーwatchTowrで脅威インテリジェンス責任者を務めるJake Knott氏はDark Readingの取材に対し、同社がすでにラボ環境でこの脆弱性を再現したと語りました。また「適切なターゲットが相手であれば、悪用はまったく難しくないでしょう」と述べています。

さらに同氏は、概念実証(PoC)の攻撃コードが公開されるまでに数日以上かかれば、むしろ意外だと話します。

「攻撃者にとって、この脆弱性の再現はおそらく簡単な部分です。悪用に使われる手法や基本要素がすでに確立されているからです」とKnott氏は言います。「難しいのは、無差別に大規模な被害を出せるほど広く使われ、しかも脆弱な構成になっているソフトウェアや環境を見つけることです」

翻訳元: https://www.darkreading.com/application-security/critical-rails-bug-derail-vulnerable-servers

本記事は darkreading.com の記事を翻訳・要約したものです。