Microsoft Exchange の SSRF 脆弱性、権限の低いユーザーでもファイル読み取り可能な実証コードが公開

新たに公表されたMicrosoft Exchange Server 2019のサーバーサイドリクエストフォージェリ(SSRF)脆弱性は、CVE-2026-45504として追跡されており、認証済みであれば権限の低いユーザーでも追加の認可なしにサーバー上の任意のファイルを読み取れてしまうというものです。

HawkTraceチームのセキュリティ研究者Batuhan Er氏が、実際に動作する概念実証(PoC)コードとともに技術的な詳細を公開し、この脆弱性にCVSSスコア8.8を割り当てました。

この脆弱性はSSRFに起因するファイル読み取りの問題で、電子メールやカレンダー、連絡先、タスクをOutlookなどのクライアントを通じて管理する、Microsoftのサーバー型メッセージングプラットフォームであるExchangeのオンプレミス環境に影響します。

根本原因は、ExchangeのOneDriveおよびWOPI(Web Application Open Platform Interface)連携機能、具体的にはOneDriveProUtilities.GetWacUrlと、それを支える補助関数であるTryTwiceおよびGetTokenRequestWebResponseにあります。

これらのメソッドは、SharePointのWOPI APIを介してOfficeドキュメントを開く際のトークン取得を処理しますが、WOPIプロバイダーから返されるWebApplicationUrlのスキームを、後続のリクエスト構築に使用する前に検証していません。

TryTwice関数はURLを直接WebRequest.CreateHttp(url)に渡すため、攻撃者が制御するエンドポイントから提供されたアドレスであっても制限なくリクエストされてしまいます。一方、GetTokenRequestWebResponseはそのURLをSharePointのREST API呼び出しへと変換します。

攻撃者は、攻撃者が制御するサーバーを指すProviderEndpointUrlを持つEWSのReferenceAttachmentを作成することで、この連鎖を悪用できます。被害者が添付ファイルのプレビューを開くと、Exchangeはそのサーバーへリクエストを送信します。

すると攻撃者のサーバーは、file:///C:/windows/win.ini#のような細工したWebApplicationUrlを応答として返します。Exchangeはaccess_tokenaccess_token_ttlscというOAuthパラメータをこのURLに直接付加するため、通常であれば単純なファイルパスでは構文が崩れてしまい、ファイルを正しく解決できません。

攻撃者にとってはこの問題を#というフラグメント文字が解決してくれます。これより後に現れる部分はURIのフラグメントとして扱われ、パーサーによって破棄されるため、ExchangeはFileWebRequest経由でfile:///C:/windows/win.iniにあるファイルを取得し、その内容をレスポンスとして返してしまいます。

HawkTraceによれば、悪用の経路はExchangeのOWAサーバーコアを一直線にたどるとのことです。まず添付ファイル処理を開始するGetWacAttachmentInfo.ExecuteAsyncから始まり、参照添付ファイルのロジックを処理する部分へと移ります。

そこから、内部形式・ラッパー形式の両方におけるOneDriveProUtilities.GetWacUrlが脆弱なリクエストを構築し、GetTokenRequestWebResponseTryTwiceがSSRF呼び出しを実行して、悪意のあるXMLレスポンスからWebApplicationUrlAccessTokenAccessTokenTtlの各フィールドを解析します。

この一連の処理はすべて、添付ファイルを作成する際に使われる標準的なEWS呼び出しを通じて到達可能であるため、有効なメールボックスアカウント以上の高い権限は一切不要でトリガーできてしまいます。

CVE-2026-45504を悪用すると、攻撃者は細工した添付ファイルのメタデータと悪意のあるWOPIレスポンスだけで、設定ファイルや認証情報、その他Exchangeサーバー上に保存された機密性の高いローカルファイルを窃取できてしまいます。

Microsoftによる恒久的な修正では、WOPIプロバイダーから返されるWebApplicationUrlの値に対して厳格なスキーム検証を行い、file://やその他の非HTTP(S)スキームがWebClient.OpenRead()に到達する前に明示的にブロックすることが求められます。

パッチが適用されるまでの間、管理者はWOPIおよびOneDrive連携設定を監査し、不審なリクエストがないか監視することが推奨されます。

翻訳元: https://cyberpress.org/microsoft-exchange-ssrf-flaw/

ソース: cyberpress.org