Discourseに ImageMagick の脆弱性、悪意ある画像アップロードで任意のファイル読み取りが可能に

セキュリティ研究者は、Discourseに深刻な脆弱性(CVE-2026-55420)が存在することを明らかにしました。この欠陥を悪用すると、権限の低いユーザーでも、プラットフォームのImageMagickベースのアップロード処理を足がかりに基盤となるサーバー上のファイルを読み書きできるおそれがあります。

Securityincident response

この問題はホスティング顧客向けには2026年6月に修正済みで、2026年6月30日に公表されました。

脆弱性の影響を受けるのは、DockerベースのスタックでDiscourseをデフォルト構成のまま運用している環境です。攻撃に必要なのは、プラットフォームで最も低い権限階層であるTrust Level 0のアカウントだけです。

攻撃者は細工した画像をアップロードすることで、TOCTOU(time-of-check-to-time-of-use)競合状態を引き起こし、最終的にサーバー上の機密ローカルファイルへアクセスできる可能性があります。

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)では、アップロード処理における主要色の算出時にPostScriptが実行されることを実証しました。

Image

より深刻なのは、ImageMagickのMSVGおよびMSL処理機能が関わる段階です。MSL(Magick Scripting Language)を使うと、ImageMagickにローカルパスの内容を読み取らせ、別の場所へ書き込ませることができます。

このチェーンでは、研究者らが悪意あるアップロードによって/tmpにMSLペイロードを配置しました。続いて、処理中に別の一時アップロードファイルをSVGのトリガーに差し替えました。

この競合を現実的に成立させるため、研究者らはDiscourseの画像最適化ワークフローにおけるjpegoptimの段階を長引かせる、細工したJPEGファイルを使用しました。

この遅延により、対象の一時ファイルをアトミックに置き換えられる時間の余裕が広がります。その後の主要色算出処理が差し替え後のSVGを処理すると、ImageMagick内部のSVG処理が呼び出され、攻撃者が制御するMSLペイロードが読み込まれました。

ペイロードは/etc/passwdなどのファイルを読み取って画像に保存し、その画像を通常のDiscourseアップロードとして保管させることができます。攻撃のレスポンスにはアップロード結果のURLが含まれるため、攻撃者はサーバーのファイルシステム構成を知る必要がありません。

今回の問題は、ファイルアップロード処理が、ファイル拡張子やマジックバイトの検出、形式変換だけを独立したセキュリティ対策として頼るべきではないことを示しています。複雑なパーサーやGhostscriptのようなデリゲートプログラム は攻撃対象領域を大幅に広げます。特に、処理の段階ごとにファイルの解釈が異なりうる場合は注意が必要です。

Securityincident response

Image

実証された影響は任意のファイルの読み取り・書き込みでしたが、研究者らは、デプロイ構成や利用可能なデシリアライゼーション経路によっては、Railsのシークレットや環境データといった機密ファイルを悪用して、さらに権限を拡大される可能性があると警告しています。

Discourseは、ImageMagickに対してデフォルト拒否のセキュリティポリシーを導入することでこの問題に対処しました。新しい設定では、Ghostscriptの実行を含む安全でないデリゲートをブロックし、Discourseに必要なコーダーのみを許可します。これにより、アップロードされたコンテンツが危険なImageMagickの機能にアクセスできる余地が狭まります。

管理者には、速やかにDiscourseを更新することが推奨されています。あわせて、デプロイ済みのImageMagickポリシーが不要なコーダーやデリゲートをブロックしていることを確認し、可能な限り信頼度の低いアカウントのアップロード権限を制限してください。拡張子の不一致、JXLやPDFの不審な特徴、過大なJPEGメタデータ、予期しない一時ファイルの動きを伴うアップロードの監視も欠かせません。

MTTRを21分短縮し、被害が出る前にサイバー脅威を阻止。ANY.RUNのサンドボックスをSOCに導入

翻訳元: https://gbhackers.com/discourse-imagemagick-vulnerability-enables-arbitrary-file-read-through-malicious-image-uploads/

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