Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20250415_外部ID_「混乱する代理問題」に混乱する

Avatar for sato sato
April 17, 2025

 20250415_外部ID_「混乱する代理問題」に混乱する

Avatar for sato

sato

April 17, 2025

More Decks by sato

Other Decks in Technology

Transcript

  1. 2 Copyright © SCSK Corporation Datadog Learning Courseで勉強 ◼ AWSのインテグレーションに関する講座が

    無料公開されている ⚫ Datadogのラボ環境(14日間有効)とハンズ オン用のAWSアカウント(2時間制限)が払い 出される ⚫ 各種インテグレーションをセッティングしAWS 監視の仕方を一通り学べる ◼ が、一部の設定は自動化済み ⚫ ハンズオン環境を立ち上げた瞬間に CloudFormationが実行されてインテグレー ション設定は紐付けが不要 ⚫ 「気がついたら設定されている」状態だったの で勉強のため手動設定マニュアルを眺める
  2. 3 Copyright © SCSK Corporation 外部IDとは…? ◼ サードパーティのサービス提供者とAWSアカウントを連携する際に、作成したIAMロールに信 頼ポリシーを作成し ⚫

    プリンシパルを制限 ⚫ 外部IDを指定 https://docs.fortinet.com/document/forticnp/22.4.a/online-help/78501/update-aws-role-external-id 外部IDの謎 ⚫ 信頼関係でエンティティを制限しているのに 二重に認証をしている? ⚫ シークレットっぽいのにアクセスキーとなどと 異なりコンソールから見ることができる? ここから本題
  3. 4 Copyright © SCSK Corporation ドキュメントを見てみる このシナリオでは、次のことを前提としています。 • AWS1 はあなたの

    AWS アカウント。 • AWS1:ExampleRole は、お客様のアカウントのロールである。このロールの信頼ポリシーは、Example Corp の AWS アカウントを、ロールを引き受け ることができるアカウントとして指定することによって、Example Corp を信頼しています。 次の状況が発生します。 1. お客様は、Example Corp のサービスの使用を開始するとき、AWS1:ExampleRole の ARN を Example Corp に提供します。 2. Example Corp はそのロールの ARN を使用して、お客様の AWS アカウント のリソースにアクセスするために必要な一時的なセキュリティ認証情報 を入手します。この方法では、お客様に代わって操作を実行できる "代理" として Example Corp を信頼します。 3. 別の AWS ユーザーも Example Corp のサービスを利用し始め、このユーザーも AWS1:ExampleRole の ARN を Example Corp が使用できるように提 供するとします。この別のユーザーは、秘密ではない AWS1:ExampleRole を知った、または推測した可能性があります。 4. その別のユーザーが Example Corp に自分のアカウントの AWS リソース (そう自称しているリソース) へのアクセスを依頼すると、Example Corp は AWS1:ExampleRole を使用してお客様のアカウントのリソースにアクセスします。 このようにして、その別のユーザーはお客様のリソースに不正にアクセスできます。Example Corp は、この別のユーザーによって操られ、無意識にお 客様のリソースにアクセスしたため、"混乱した代理" になります。 https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/confused-deputy.html ◼ 「混乱する代理問題」が鍵となるらしいが…
  4. 7 Copyright © SCSK Corporation 混乱する代理問題をたとえてみる:正常な状態 ◼ 株式会社◯✕での作業を業者Aに委託する ⚫ 作業には入館証が必要だが、業者の情報を紐つけて作成済み。

    ⚫ 業者A本人が株式会社◯✕の受付で入館証の登録名「ギョウシャエ-ヨウパス」を伝えれば入館証を貰える 業者A 「ギョウシャエ-ヨウパス」 有効化済 ◆私の会社は株式会社◯✕です、 代わりに作業を頼みますよ ◆入館証は「ギョウシャエ-ヨウパス」という名 前で登録済みだから、受付でその名 前を伝えて入館証をもらってね 株式会社◯✕ 依頼 あなた 「ギョウシャエ-ヨウパス」 事前の取り決め
  5. 8 Copyright © SCSK Corporation 混乱する代理問題をたとえてみる:第三者による攻撃 ◼ 攻撃者が入館証の名前を推測し、偽りの登録情報とともに業者と取り決めを行う ⚫ 業者は正当な手続きをもって入館証を手に入れ、攻撃者の意図した作業を行ってしまう

    ⚫ 攻撃者は「あなた」になりすましている訳ではない 業者A 「ギョウシャエ-ヨウパス」 有効化済 ◆私の会社は株式会社◯✕です、 代わりに作業を頼みますよ ◆入館証は「ギョウシャエ-ヨウパス」という名 前で登録済みだから、受付でその名 前を伝えて入館証をもらってね 株式会社◯✕ 依頼 攻撃者 事前の取り決め 入館証の 登録名を推測 「ギョウシャエ-ヨウパス」
  6. 9 Copyright © SCSK Corporation 再考: 混乱する代理問題 ◼ 会社➔AWS環境、業者の情報を登録した入館証➔信頼関係を設定したIAMロール ⚫

    サービス提供者は依頼元の識別をできないがそのままアクセス権限を持ててしまう ⚫ サードパーティーによるリソースの使用はユーザーに請求される サービス提供者 ユーザ/攻撃者 AWS Cloud: 1111222233334444 “ApplicationRole” 信頼ポリシー AWS Account: 1111222233334444 Role ARN: “ApplicationRole” AssumeRole
  7. 10 Copyright © SCSK Corporation 外部IDの導入 ◼ サービス提供者がユーザごとに一意な外部IDを発行 ⚫ ユーザはあらかじめ信頼ポリシーの条件に外部IDを設定しておく

    ⚫ サービス提供者はAssumeRoleのリクエストに外部IDを含める サービス提供者 ユーザ/攻撃者 AWS Cloud: 1111222233334444 “ApplicationRole” 信頼ポリシー・外部ID AWS Account: 1111222233334444 Role ARN: “ApplicationRole” AssumeRole 外部IDを渡す
  8. 11 Copyright © SCSK Corporation 外部IDをたとえてみる:通常利用 ◼ 業者は事前の取り決めとして「合言葉」(外部ID)を発行 ⚫ 業者は入館証を受け取る際に合言葉を併せて伝え、これが正しければ受付は入館証を渡す

    業者A 「ギョウシャエ-ヨウパス」 有効化済 ◆私の会社は株式会社◯✕です、 代わりに作業を頼みますよ ◆入館証は「ギョウシャエ-ヨウパス」という名 前で登録済みだから、受付でその名 前を伝えて入館証をもらってね 株式会社◯✕ あなた ギョウシャエ-ヨウパス、あいうえお 事前の取り決め 了解、あなたの合言葉は「あいうえお」ね これで入館証を保護しといて 事前の取り決め
  9. 12 Copyright © SCSK Corporation 外部IDをたとえてみる:攻撃の失敗 ◼ 万が一攻撃者があなたの合言葉を知ったとしても、業者は攻撃者向けに発行した合言葉を 使って入館証を受け取ろうとするため失敗する 業者A

    「ギョウシャエ-ヨウパス」 有効化済 ◆私の会社は株式会社◯✕です、 代わりに作業を頼みますよ ◆入館証は「ギョウシャエ-ヨウパス」という名 前で登録済みだから、受付でその名 前を伝えて入館証をもらってね 株式会社◯✕ 攻撃者 ギョウシャエ-ヨウパス、いろはにほ 事前の取り決め 了解、あなたの合言葉は「いろはにほ」ね これで入館証を保護しといて 事前の取り決め
  10. 13 Copyright © SCSK Corporation まとめ ◼ 信頼関係でエンティティを制限しているのに二重に認証をしている? ➔ 外部IDは二重の認証ではなく、エンティティに加えて目的によってロールの利用を制限している

    ◼ アクセスキーとなどと異なりコンソールから見ることができる? ➔ 外部IDは認証情報ではなく、認可のための識別情報の役割。 仮に外部IDが漏れたとしても、プリンシパルが制限されているので権限を不正利用されることはない ⚫ 外部IDはユーザごとに一意である事が重要。このためUUIDがよく使われシークレットのように見える ご清聴ありがとうございました