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

Serverless applicationと セキュリティ~Cognito編~

a_zara_n
February 18, 2021

Serverless applicationと セキュリティ~Cognito編~

Security-JAWS #20 Session: 03
[リンク]
Not So Secureが公開している記事: https://notsosecure.com/hacking-aws-cognito-misconfigurations/
発表者の所属会社: https://flatt.tech/
ブログ: https://flattsecurity.hatenablog.com/entry/cloud_security_aws_case
発表者Twitter: https://twitter.com/a_zara_n

a_zara_n

February 18, 2021
Tweet

More Decks by a_zara_n

Other Decks in Technology

Transcript

  1. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n Who am I

     名前 齋藤徳秀 通称 Azara @a_zara_n 所属 株式会社 Flatt Security プロフェッショナルサービス事業部 脆弱性診断チーム 情報科学専⾨学校 情報セキュリティ学科 (3⽉卒業予定) 好きなAWS サービス Amazon Cognito AWS Lambda
  2. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 会社概要  会社名

    株式会社Flatt Security 所在地 〒113-0033 東京都⽂京区本郷3-43-16 コア本郷ビル2A 設⽴ 2017年5⽉23⽇ 代表者名 代表取締役 井⼿康貴 事業内容 サイバーセキュリティ関連サービス 資本⾦ 2億5110万円(資本準備⾦含む)
  3. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n  プロフェッショナルサービス n

    セキュリティ診断サービス n アンチウィルス性能検証サービス プロダクトサービス n Flatt Security Learning Platform 主な事業
  4. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 本⽇の内容について  n

    Serverless ApplicationとSecurity n 解説に利⽤するサンプルアプリについて n Cognitoへの攻撃⼿法と対策 n まとめ
  5. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 本発表の視点について  発表で触れること

    n 設定不備やアプリケーションの脆弱性によって 引き起こされる機密性や完全性の侵害 発表で触れないこと n ロギング関連 n 耐障害性 n 可⽤性
  6. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n Serverless applicationとSecurity 

    Serverless Applicationへの脅威と攻撃 n アプリケーションの脆弱性対策 n 開発したアプリケーションへの攻撃 n 利⽤するライブラリへの攻撃 n 利⽤するサービスの設定不備 n 設定不備による直接的な攻撃 n 設定不備による間接的な攻撃 etc …
  7. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n Serverless applicationとSecurity 

    Serverless Applicationへの脅威と攻撃 n アプリケーションの脆弱性対策 n 開発したアプリケーションへの攻撃 n 利⽤するライブラリへの攻撃 n 利⽤するサービスの設定不備 n 設定不備による直接的な攻撃 n 設定不備による間接的な攻撃 etc … Amazon Cognito
  8. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n Cognitoへの攻撃⼿法の例  n

    本来のアカウント作成フローからの逸脱 n Cognito User Poolにおける ユーザー属性の意図しない書き換え
  9. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 本来のアカウント作成フローからの逸脱  本来のアカウント作成フロー

    1. User AがUser Bを招待 2. User Bは新規登録のため /registerを経由し新規登録 3. Cognitoから初期パスワードが 発⾏されて新規登録完了 6TFS"
  10. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 本来のアカウント作成フローからの逸脱  本来のアカウント作成フロー

    1. User AがUser Bを招待 2. User Bは新規登録のため /registerを経由し新規登録 3. Cognitoから初期パスワードが 発⾏されて新規登録完了 6TFS#
  11. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 本来のアカウント作成フローからの逸脱  本来のアカウント作成フロー

    1. User AがUser Bを招待 2. User Bは新規登録のため /registerを経由し新規登録 3. Cognitoから初期パスワードが 発⾏されて新規登録完了 6TFS#
  12. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 本来のアカウント作成フローからの逸脱  事象

    UI上は新規登録は招待のみだが、 ユーザーの⾃⼰サインアップの許可にチェックが⼊っていた為 第三者から新規登録ができてしまう
  13. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 本来のアカウント作成フローからの逸脱  対策

    サービスの新規登録フローに合わせたサインアップ設定に設定しましょう。 個々のユーザーが新規登録することを想定していない場合は ”管理者のみにユーザーの作成を許可する”を選択しましょう。
  14. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n [発展] Cognito ID

    Pool からの認証情報の取得  IUUQTEPDTBXTBNB[PODPNKB@KQDPHOJUPMBUFTUEFWFMPQFSHVJEFDPHOJUPTDFOBSJPTIUNM
  15. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n [発展] Cognito ID

    Pool からの認証情報の取得  IUUQTOPUTPTFDVSFDPNIBDLJOHBXTDPHOJUPNJTDPOGJHVSBUJPOT
  16. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 本来のアカウント作成フローからの逸脱  この攻撃でログインが成功してもアプリが利⽤できない場合も

    1. Cognitoの新規登録で必要とされなかった属性がアプリ内 で必須として利⽤されている場合 => アプリケーションでエラーが発⽣し利⽤できない 2. アプリケーションが独⾃に持っている認可機構で弾いている => Cognitoの何かしらの属性とアプリケーションが保持し ている情報を照合している可能性
  17. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n Cognito User Poolにおける

    ユーザー属性の意図しない書き換え  Cognitoに存在する2種類の属性 カスタム属性 利⽤者が⾃由に利⽤できる属性で、最 ⼤25個利⽤することができる。 作成後の値変更の可否や開発者専⽤の 属性などが設定可能。 標準属性 OpenID Connectの仕様に準拠した実装
  18. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n Cognito User Poolにおける

    ユーザー属性の意図しない書き換え  アプリクライアントと属性の読み書き CognitoのAPIを操作する際に利⽤さ れるアプリクライアントにはCognito に設定されている属性に関するアクセ ス権限がある。
  19. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n Cognito User Poolにおける

    ユーザー属性の意図しない書き換え  新規作成したユーザーでTokenを取得
  20. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n Cognito User Poolにおける

    ユーザー属性の意図しない書き換え  サンプルのAdmin APIへリクエスト
  21. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n Cognito User Poolにおける

    ユーザー属性の意図しない書き換え  リクエストに利⽤したToken
  22. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n Cognito User Poolにおける

    ユーザー属性の意図しない書き換え  カスタム属性の変更
  23. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n Cognito User Poolにおける

    ユーザー属性の意図しない書き換え  新規作成したユーザーでTokenを取得
  24. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n Cognito User Poolにおける

    ユーザー属性の意図しない書き換え  Admin として認識されるようになりました
  25. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n Cognito User Poolにおける

    ユーザー属性の意図しない書き換え  対策 アプリクライアントには必要最⼩限かつ認可や権限に関連する属性の権限を与えない または、認可や権限に関連する値を推測可能なものにしない
  26. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n まとめ  主題

    n mBaaS(Amplify)やServerless applicationで利⽤されるAmazon Cognitoにおける攻撃や脅威 攻撃例 n 本来のアカウント作成フローからの逸脱 n Cognito User Poolにおけるユーザー属性の意図しない書き換え 対策と結論 n アプリケーションの設計に合わせて設定を適切