Discourse の脆弱性 CVE-2026-55420 が FIX:ファイル・アップロード機能とImageMagick の干渉

Discourse ImageMagick Vulnerability Enables Arbitrary File Read Through Malicious Image Uploads

2026/10/12 gbhackers — Discourse に存在する重大な脆弱性 CVE-2026-55420 を、セキュリティ研究者が明らかにした。この脆弱性を悪用する権限の低いユーザーは、プラットフォームの ImageMagick ベースのアップロード処理を通じて、基盤となるサーバ上のファイルを読み書きする可能性がある。この問題は、ホスティング・サービスの利用者向けには 2026年6月に修正され、同月30日に一般公開された。

この脆弱性の影響を受けるのは、Docker ベースのスタックを使用する標準構成の Discourse 環境である。悪用に必要なのは、Discourse で最も権限が低い Trust Level 0 のアカウントのみとなっている。

細工した画像ファイルをアップロードする攻撃者は、チェック時と使用時の競合状態 (Time-of-Check-to-Time-of-Use:TOCTOU) を引き起こし、最終的にサーバ上の高機密性のローカル・ファイルにアクセスする可能性がある。

Discourse の ImageMagick に関連する脆弱性

Searchlight Cyber の研究者 Kevin Gervot が公開した調査で判明したのは、Discourse のアップロード検証/ImageMagick/Ghostscript/FastImage/一時ファイル処理の間に、複数の安全でない相互作用が存在することだ。

Discourse は、アップロードされたファイルがサポート対象の画像であるかどうかを、指定されたファイル名や画像形式の検出結果に基づいて確認する。

サポートされるファイル形式には、JPEG/PNG/GIF/SVG/WebP/AVIF/HEIC/JPEG XL (JXL) が含まれる。

ただし、このアップロード処理では、攻撃者が指定したファイル拡張子を保持した一時ファイルのパスに対して、ImageMagick の convert ユーティリティが呼び出される。

研究者が作成したのは、複数のファイル形式として解釈可能な単一の「ポリグロット・ファイル」であり、JPEG XL に似た構造のペイロードと PostScript の内容を組み合わせる悪用手法である。

これにより、悪意のファイルは Discourse の画像検証を通過しながら、PDF や PostScript の処理に使用される、ImageMagick/Ghostscript の処理経路に到達できる。

概念実証 (PoC) では、アップロード処理における画像の代表色 (dominant color) の計算を通じて、PostScript が実行されることが確認された。

Final full chain script execution (Source: SLCyber)
Final full chain script execution (Source: SLCyber)

より重大な問題としては、ImageMagick の MSVG および MSL 処理機能の悪用が判明した。

MSL (Magick Scripting Language) は、ImageMagick に対する指示により、ローカルパスからファイルの内容を読み取り、別の場所への書き込みを可能にする。

研究者たちの今回の攻撃チェーンは、悪意のファイルのアップロードにより、MSL ペイロードを /tmp に配置するものだ。その後に、別の一時アップロード・ファイルが処理されている最中に、そのファイルを SVG 形式のトリガー・ファイルに置き換える。

この競合状態を実際に悪用できるようにするため、研究者たちが用いたのは、Discourse の画像最適化処理における jpegoptim の実行時間を引き延ばすよう細工した JPEG ファイルである。この遅延により、標的の一時ファイルをアトミックに置き換えるための時間的な猶予が拡大した。

その後に、代表色を計算する処理が置き換えられた SVG ファイルを読み込むと、ImageMagick の内部 SVG 処理が呼び出され、攻撃者が用意した MSL ペイロードが読み込まれる。

このペイロードを介することで、/etc/passwd などのファイルを読み取り、内容を画像に保存した上で、通常の Discourse アップロードとして保存させることが可能になる。

攻撃に対するレスポンスには、アップロードされたファイルの URL が含まれる。そのため、標的サーバのファイル・システム構造を、攻撃者は事前に把握する必要がない。

今回の問題が示すのは、ファイル・アップロード処理において、ファイル拡張子/マジックバイトによる形式判定/フォーマット変換を、それぞれ独立したセキュリティ対策として利用するだけでは不十分であることだ。

複雑なパーサや、Ghostscript のような外部処理プログラム (デリゲート) は、攻撃対象領域を大幅に拡大させる。特に、同じファイルが処理段階に応じて、異なる形式として解釈される場合には、そのリスクはさらに高まる。

Complete Chain Summary (Source: SL Cyber)
Complete Chain Summary (Source: SL Cyber)

今回の概念実証で確認された影響は、任意のファイルの読み取り/書き込みである。

ただし、研究者たちが警告するのは、環境の構成や利用可能なデシリアライズ経路に応じて、Rails のシークレットや環境情報などの機密ファイルが悪用され、アクセス権限を昇格させる可能性があることだ。

すでに Discourse は、この問題への対策として、ImageMagick に対するデフォルト拒否 (default-deny) のセキュリティ・ポリシーを実装している。

この新しい設定では、Ghostscript の実行を含む、安全ではないデリゲートをブロックし、Discourse の動作に必要なコーダーのみを許可する。これにより、アップロードされたコンテンツが、リスクの高い ImageMagick の機能へアクセスすることが制限される。

管理者には、以下の対策が推奨されている。

  • Discourse を速やかにアップデートする。
  • 運用環境の ImageMagick セキュリティ・ポリシーを確認し、不要なコーダーやデリゲートがブロックされていることを検証する。
  • 可能な限り、信頼レベルの低いアカウントによるファイル・アップロード機能を制限する。
  • ファイル拡張子と実際の形式が一致しないアップロードを監視する。
  • JXL/PDF に関連する異常なファイル構造や、過大な JPEG メタデータを含むアップロードを調査する。
  • 予期しない一時ファイルの操作が発生していないことを監視する。