GCP - Understanding Domain-Wide Delegation

htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ

HackTricksをサポートする他の方法:

この投稿は、https://www.hunters.security/en/blog/delefriend-a-newly-discovered-design-flaw-in-domain-wide-delegation-could-leave-google-workspace-vulnerable-for-takeoverの紹介です。詳細についてはリンク先を参照してください。

ドメインワイド委任の理解

Google Workspaceのドメインワイド委任は、Google Workspace Marketplaceからの外部アプリまたは内部のGCPサービスアカウントユーザーを代表してWorkspace全体のデータにアクセスできるようにします。この機能は、Google APIとやり取りするアプリやユーザーの模倣が必要なサービスが効率を向上させ、タスクを自動化することで人為的なエラーを最小限に抑えます。OAuth 2.0を使用して、アプリの開発者や管理者はこれらのサービスアカウントに個々のユーザーの同意なしにユーザーデータへのアクセス権を与えることができます。

Google Workspaceでは、次の2つの主要なグローバル委任オブジェクトアイデンティティを作成できます:

  • GWSアプリケーション: Workspace Marketplaceからのアプリケーションを委任アイデンティティとして設定できます。各Workspaceアプリケーションは、潜在的な誤用を最小限に抑えるためにGoogleによる審査を受けた後、マーケットプレイスで利用可能になります。これにより、誤用のリスクは完全に排除されるわけではありませんが、そのようなインシデントが発生する難易度は大幅に増加します。

ドメインワイド委任:内部構造

これがGCPサービスアカウントがGoogle APIに他のGoogle Workspaceのアイデンティティを代表してアクセスする方法です:

  1. アイデンティティがJWTを作成: アイデンティティは、JWTにサービスアカウントの秘密鍵(JSONキーペアファイルの一部)を使用して署名します。このJWTには、サービスアカウントに関するクレーム、模倣するターゲットユーザー、リクエストされているREST APIへのアクセスのOAuthスコープに関する情報が含まれています。

  2. アイデンティティがJWTを使用してアクセストークンをリクエスト: アプリケーション/ユーザーは、JWTを使用してGoogleのOAuth 2.0サービスからアクセストークンをリクエストします。リクエストには、模倣するターゲットユーザー(ユーザーのWorkspaceメールアドレス)と、アクセスがリクエストされているスコープが含まれます。

  3. GoogleのOAuth 2.0サービスがアクセストークンを返す: アクセストークンは、サービスアカウントが指定されたスコープのユーザーを代表してアクションを実行する権限を表します。このトークンは通常、短命であり、定期的に更新する必要があります(アプリケーションの必要に応じて)。JWTトークンで指定されたOAuthスコープがアクセストークンに与える有効性と影響を理解することが重要です。たとえば、複数のスコープを持つアクセストークンは、多数のREST APIアプリケーションに対して有効です。

  4. アイデンティティがアクセストークンを使用してGoogle APIを呼び出す: 適切なアクセストークンを使用することで、サービスは必要なREST APIにアクセスできます。アプリケーションは、Google API向けのHTTPリクエストの「Authorization」ヘッダーでこのアクセストークンを使用します。これらのAPIは、トークンを使用して模倣されたアイデンティティを検証し、必要な権限を持っていることを確認します。

  5. Google APIが要求されたデータを返す: アクセストークンが有効であり、サービスアカウントに適切な権限がある場合、Google APIは要求されたデータを返します。たとえば、次の図では、_users.messages.list_メソッドを使用して、ターゲットWorkspaceユーザーに関連するすべてのGmailメッセージIDをリストアップしています。

最終更新