セキュリティ
16歳がMicrosoftのバグを発見、17.3兆行のデータベースへの管理者アクセス権を取得
16-year-old found Microsoft bug, got admin access to 17.3T-row databases (theregister.com)
要約
16歳のセキュリティ研究者Faav氏が、MicrosoftのTitan分析サービスにおける認証の脆弱性を発見しました。これにより、有効な認証情報なしに管理者権限でSQLクエリを実行し、推定17.3兆行のデータを含む分析データベースにアクセスできる状態となりました。MicrosoftはAPIを修正し、Faav氏に5,000ドルのバグバウンティを支払いました。
全文翻訳
16歳の研究者がMicrosoftのバグを発見、17.3兆行のデータベースへの管理者アクセス権を取得
16歳のセキュリティ研究者であるFaav氏が、MicrosoftのTitan分析サービスで認証の不備を発見し、管理者アクセス権を取得しました。この脆弱性を利用することで、有効な認証情報なしにSQLクエリを実行し、推定17.3兆行のデータを含む分析データベースにアクセスできる可能性がありました。
TitanはMicrosoftの従業員のみがアクセスできる内部分析プラットフォームですが、Faav氏は自身が開発したAIハックボット「Antares」の助けを借りて、Titanがログイン時にトークンの署名を検証しないことに気づきました。これにより、Azure Cloud Servicesホスト経由でTitanのAPIにアクセスすることが可能になりました。
Microsoftはその後、APIを修正し、Faav氏の研究に対して5,000ドルのバグバウンティを支払いました。Faav氏によると、この発見は10日間の認証エラーの後、学校の宿題を終えてから問題に戻った際に、土曜日の午前1時過ぎにTitanの管理者としてSQLを実行できたことでブレークスルーとなりました。
Faav氏はブログで「午前2時でした。叫びたい、あるいは少なくとも何か声に出して言いたい気分でしたが、両親は寝ていました。だから、ただそこに座って17,333,335,124,315を見て、もう一度計算を確認しました」と述べています。
彼はまた、Microsoftの要請により、公開前にブログ記事を書き直し、一部のセクションや数字を削除し、影響に関する記述を言い換えたと指摘しています。
Microsoftは声明で、「Faav氏から報告された発見を調査する機会を得られたことに感謝しています。彼らの報告と協調的な脆弱性開示は、サービスの強化を通じて顧客をより良く保護するのに役立ちました。Microsoftのバグバウンティプログラムの条件の下での安全なセキュリティ研究を高く評価しており、今後もFaav氏と協力していくことを楽しみにしています」と述べています。
少年と彼のボット
この研究は8月25日に始まり、AntaresがTitanの公開APIを発見しました。その後10日間、人間とボットはサービスのJSON Web Token (JWT) 認証チェックとメール形式のユーザープリンシパル名 (UPN) をテストし、最終的に署名のないトークンがTitanのローカルユーザー検索に到達できることを見つけましたが、Titanが認識するUPNではありませんでした。9月5日の早い時間に、Faav氏は署名のないトークンのUPNをメール形式のIDから「admin」に変更しました。Titanはこれをローカルユーザー名として認識し、管理者ロールを持つローカルユーザーID 1に解決し、SQLの実行を許可しました。
Faav氏の教訓は以下の通りです。
TitanはJWTの内容(テナント、オーディエンス、アプリID、ユーザー)を検証しましたが、認証チェックで最も重要な部分である署名は決して検証しませんでした。認証チェックは、すべてのドアに動作するキーカードリーダーがあるホテルのようでしたが、どのキーカードでもどの部屋にも開きました。アプリにはすべてのアクセス制御ロジックが存在していましたが、その欠けていた一点がすべてを無意味にしていました。開発者(またはコーディングエージェント)がこの記事を読んでいるなら、認証を構築する際に、何よりもまず署名を検証することを確実にしてください。
これにより、Faav氏はTitanのプラットフォームメタデータデータベースにアクセスできるようになり、そこからアプリケーションテーブルを直接クエリすることができました。メタデータには以下が含まれていました。
約25,000件のアカウントとメールレコード。
17,990件の従業員メールレコード。
15,001件の従業員組織レコード。
355件のデータベース構成。
20,979件の仮想データセットSQL定義。
24,569件のダッシュボード、425,891件のチャート、および27,347件のデータセット定義。
Titanのユーザーおよび使用状況ディレクトリは、従業員の役職、部署、および管理階層を公開しており、研究者はこれがソーシャルエンジニアリング攻撃に役立つ可能性があると指摘しています(「ただし、私はそれをテストしたり実証したりしたことはありません」と付け加えています)。
彼はまた、Bing分析のサンプルを見つけ、検索情報、識別子、および国または州レベルの詳細のような高レベルの場所情報を含む2行をテストしました。Faav氏によると、場所の値には正確なユーザーの場所は含まれていませんでした。
17.3兆行のデータ
次に彼は大当たりを引きました。アーカイブされた構成からの56のルーティング値をテストしたところ、30がまだアクティブであることが判明しました。「各ルーティング値はバックエンド構成を指し、各構成には1つ以上のデータベースが含まれていました。そのため、30のライブ値は24の構成を通じて解決され、9,863の一意のテーブル名を持つ17の接続された分析データベースにつながりました」とバグハンターは書いています。
合計で約17.3兆行になります。Faav氏は、これはメタデータから導き出されたストレージ推定値であり、履歴データ、重複データ、派生データが含まれている可能性が高いと述べています。「しかし、それでも非常に多い数です。」
9月6日から9月8日の間、Microsoftはティーンエイジャーにテストを停止するよう求め、不正な活動がないことを確認するためにIPアドレスを要求しました。
その翌日、Microsoftはエンドポイントをロックダウンし、Faav氏に「報告により、残りの露出に対処するための調査と修復が直ちに行われました」と伝えました。Microsoftは9月17日にこのバグハンターに5,000ドルを授与しました。