本ブログは、Guidance on Potential Misconfiguration of Authorization of Multi-Tenant Applications that use Azure AD の抄訳版です。最新の情報は原文を参照してください。
概要
マイクロソフトは、Azure AD を使用する マルチテナント アプリケーションの承認の構成ミスに対処しました。構成ミスは、Wiz 社によって検出およびマイクロソフトに報告され、少数の内部アプリケーションに影響がありました。構成ミスにより、外部の関係者が影響を受けるアプリケーションへの読み取りおよび書き込みアクセスが可能な状態にありました。
- マイクロソフトはすぐに構成ミスを修正し、問題に対処するための承認チェックを追加しました。加えて、意図しないアクセスが発生していないことを確認しました。
- マイクロソフトは、構成ミスを修正したことで、リサーチャーによって報告されたすべてのアクションが不可能になったことを確認しました。
- マイクロソフトは、将来の構成ミスのリスクを軽減するために追加の変更を加えました。
マルチテナント アプリケーションを使用しているお客様は、この記事で説明されているセキュリティ ガイダンスに従って、アプリケーションを不正アクセスから保護する必要があります。さらに、マイクロソフトは、すべてのお客様が セキュリティのベスト プラクティス に従うことをお勧めします。
技術的な詳細
Microsoft Azure Active Directory アプリケーション は、シングルテナントまたはマルチテナント として構成できます。マルチテナント アプリケーションを使用すると、開発者は組織の境界を越えてアプリケーションを利用できるようにし、企業間、企業と消費者、および複雑な組織のさまざまなシナリオを実現できます。マルチテナントとして構成されたアプリケーションでは、アクセスを許可されるべきエンティティのみを許可するように、追加の承認 (AuthZ) チェックが必要です。このような追加の承認チェックの必要性は、Azure AD 認証を処理するために Azure App Service Authentication などの機能を使用しているアプリケーションにも当てはまります。
この特定のケースでは、一部のアプリケーションがマルチテナント アプリケーションとして正しく構成されていませんでした。このことで、他のマルチテナント アプリケーションが承認チェックを正しく処理せず、テナントに明示的に登録されていないクライアントからテナント内のリソースへのアクセスを誤って承認した可能性があります。正しい承認チェックを行うためには、アプリケーションがクライアントから提供されたアクセストークンにサービスプリンシパルが含まれているかどうかを確認する必要があります。
マルチテナント アプリケーションを不正アクセスから保護するには、以下のガイダンスを参照してください。
セキュリティの強化
マイクロソフトは Azure AD を更新し、リソース テナントに登録されていないクライアントへのアクセス トークンの発行を停止しました。これにより、アプリケーションにおける承認チェックが正しく動作しない場合でも、この問題が発生するのを防ぎます。
- この機能は、99%以上のお客様のアプリケーションで無効になっています。サービス プリンシパルのないクライアントからのアクセスに依存する残りのマルチテナント リソース アプリケーションについては、グローバル管理者 向けの Azure サービス 正常性 セキュリティ アドバイザリ (Azure ポータルと電子メール) と Microsoft 365 メッセージ センター で手順を説明しました。マルチテナント アプリケーションを使用しているすべてのお客様は、以下のセキュリティ ガイダンスに従う必要があります。
Azure App Service 認証では、クライアント登録 (サービス プリンシパル) と許可リストに一致するテナント ID のチェックを追加するために 新しい構成オプション が導入されました。これにより、マルチテナント アプリケーションのセキュリティを強化することができます。
Azure AD を使用するマルチテナント アプリケーションのセキュリティ保護に関するガイダンス
以下は、アプリケーションを不正アクセスから保護するために、各ロールで実行できる手順について説明しています。
管理者の場合:
- マルチテナントとして登録されているテナント内のすべてのアプリケーションを棚卸します。アプリケーションが登録されているテナントの外部で使用する必要があるかどうかを確認します。使用する必要がない場合、対象ユーザーを更新 して、アプリケーションのテナントに制限します。これにより、テナントの外部からの偶発的なアクセスが排除されます。
- セキュリティのベスト プラクティスに引き続き従ってください。テナントのサインイン ログ を確認および監視します。また、"割り当てが必要ですか?" の設定を使用して、リソース アプリに明示的に割り当てられているエンティティのみにアクセスを制限します。テナント内のリソースへの外部アクセスを管理するには、条件付きアクセス ポリシー を設定します。
アプリケーション開発者の場合:
- Azure AD マルチテナント アプリケーションの承認ロジックを確認し、推奨される承認チェック を実装していることを確認します。
- 既定では認証のみを提供する App Service 認証機能 を使用するアプリケーションの場合、承認ロジックを含める明示的な手順を実行します。App Service 認証を使用すると、アプリの承認ロジックの一部として いくつかの追加チェック を構成できます。アプリケーションでは、コードからの要求を使用 して承認チェックを実行することもできます。
- オブジェクト ID (「oid」) またはその他のセキュリティ識別子に基づく承認ロジック があることを確認します。
- 顧客のデプロイ手順を更新して、各クライアント アプリのサービス プリンシパルを作成 してリソース アプリケーションへのアクセスを許可する手順を含めます。
- アプリケーションで認証とトークン管理に Microsoft 認証ライブラリ (MSAL) を使用していることを確認します。
謝辞
Wiz 社がこの調査結果に責任を持って開示し、提起された問題を調査して対処する機会を与えてくれたことに感謝します。すべての研究者は、協調脆弱性開示(CVD) の下でベンダーと協力し、セキュリティ調査を実施している間に顧客データに影響を与えないように、侵入テストの 契約規則 を遵守することをお勧めします。
参考文献
質問がある場合には、 aka.ms/azsupt の Azure ポータルからサポート ケースを開きます。
Wiz 社のブログサイト: https://www.wiz.io/blog/azure-active-directory-bing-misconfiguration