Faavと名乗る16歳のセキュリティ研究者が、Microsoftの社内向け分析サービス「Titan」に重大な認証の欠陥を発見しました。
Websitesecurity audit
この脆弱性を悪用すれば、攻撃者は管理者になりすまし、不正なSQLクエリを実行できた可能性があります。研究者の推定では、脆弱な環境には、相互接続された17の分析データベースにまたがり、合計17.3 trillion(17兆3,000億)行のデータが保存されていました。
ただし、この数字はあくまで到達可能だった可能性のあるデータ量です。実際にアクセスされたレコードの数や、外部に持ち出されたレコードの数、関係する個人の数を示すものではありません。
問題の原因は、JSON Web Token(JWT)の検証が不適切だったことです。Titanは、テナントID、オーディエンス、アプリケーションID、ユーザーIDといったトークンのクレームを確認していたとされています。
しかし、JWTの署名については暗号学的な検証を行っていませんでした。そのため攻撃者は、署名が無効な状態、あるいは署名がない状態のまま、ID情報のクレームを書き換えることができました。トークンが信頼できるIDプロバイダーから発行されたものであることを証明するための、基本的なセキュリティ対策が機能していなかったことになります。
Microsoftの認証バグ
研究者はAIを活用した偵察によってTitanを特定しました。TitanはMicrosoftの社内向け分析サービスで、Webインターフェースは「VPN REQUIRED」(VPN必須)というページで保護されていました。しかし、これとは別のAPIエンドポイントが一般公開されていました。このエンドポイントはSwaggerドキュメントを公開しており、複数のルートが記載されていました。その中には、生のSQLクエリを受け付ける/v2/Queryも含まれていました。
認証なしで送った最初のリクエストにはHTTP 401エラーが返され、APIが認可トークンを必要としていることがわかりました。そこでFaavは、外部のEntraテナントのトークンを使い、サービスがJWTのクレームをどのように処理するかを調べました。
トークンのフィールドを書き換えたところ、元の署名を変更していないにもかかわらず、Titanは変更後のテナント、オーディエンス、アプリケーションの値を受け入れました。このことから、サービスは整合性を検証せずにクレームを信頼していると強く疑われました。

続いて研究者は、署名なしトークンを示すヘッダー値alg: noneを使って、偽造JWTを作成しました。必要なクレームに想定どおりの値を設定すると、Titanはこの偽造トークンを受け入れました。
Titanの認証ロジックには欠陥があり、送られてきた`upn`クレームを使ってローカルのアプリケーションユーザーを特定していました。メールアドレス形式のEntra IDを要求することなく、バックエンドは「admin」という値を受け入れました。この値は、プラットフォームのローカル管理者アカウントとして解決されました。
その結果、研究者は有効なMicrosoftの認証情報を持たないまま、特権ユーザーとしてSQL文を実行できました。重要な教訓は、Titanが複数のクレームチェックを行っていても、アプリケーションがクレームを信頼する前にトークンの署名を検証していなかったため、それらが意味をなさなかったことです。
この脆弱性は、認証情報の窃取やブルートフォース攻撃、アカウントの侵害によって生じたものではありません。攻撃者が操作できるトークンの内容を信頼したことで発生した、認証バイパスの問題です。
Faavは、アーカイブされたTitanの構成データから復元した56個のルーティング値をテストしました。このうち30個が有効で、24の構成を経由して、9,863個のユニークなテーブル名を含む17のClickHouse分析データベースに到達しました。
研究者は、大量のデータを抜き出すのではなく、データベースのメタデータを使って、保存行数を合計17,333,335,124,315行と推定しました。この推定値には、履歴レコード、レプリカ、重複エントリ、派生データセットが含まれる可能性があります。そのため、17.3 trillion件の顧客レコードや、17.3 trillion人の被害者と解釈すべきではありません。
限定的なメタデータへのアクセスだけでも、約25,000件のアカウントおよびメールレコード、17,990件の従業員メールレコード、15,001件の従業員組織レコード、ダッシュボード定義、データセットのメタデータ、データベース構成が露出しました。
研究者はBingの分析データに対して、1行だけを返すクエリも2回実行しました。ただし、顧客の個人を特定できる情報(PII)にはアクセスしておらず、ユーザーの特定やサービス間の相関分析も行っていないと説明しています。
Faavはこの問題を報告しました。報告先はMicrosoft Security Response Centerで、日付は2026年9月5日、ケース番号は144051です。Microsoftは9月9日に、露出していたAPIエンドポイントへのアクセスを制限し、9月17日に研究者へ5,000ドルの報奨金を支払いました。
Websitesecurity audit
Microsoftは、協調的な開示によってサービスが強化され、顧客の保護に役立ったとしています。修正前にこの欠陥が悪意をもって悪用されたことを示す公的な証拠は、確認されていません。
この件は、JWTにおける基本的なセキュリティ要件をあらためて示しています。アプリケーションは、署名のないトークンを拒否し、署名アルゴリズムを明示的に指定し、信頼できる鍵でトークンの署名を検証しなければなりません。発行者、オーディエンス、テナント、ユーザーIDに関するクレームを処理するのは、その後です。
SOCアラートの調査を1件あたり21分短縮。即時対応に役立つIOCのコンテキストを、SOCに提供します。 SOCにTI Lookupを導入する
翻訳元: https://gbhackers.com/16-year-old-researcher-discovers-microsoft-authentication-bug/