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

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

04ed942e4752bcefd412a04f6380fb13?s=47 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

04ed942e4752bcefd412a04f6380fb13?s=128

a_zara_n

February 18, 2021
Tweet

Transcript

  1. Serverless applicationと セキュリティ~Cognito編~ 株式会社 Flatt Security 情報科学専⾨学校 Norihide Saito /

    Azara @a_zara_n  2020/02/18 Security-JAWS #20 Session: 03
  2. 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
  3. 会社紹介 

  4. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 会社概要  会社名

    株式会社Flatt Security 所在地 〒113-0033 東京都⽂京区本郷3-43-16 コア本郷ビル2A 設⽴ 2017年5⽉23⽇ 代表者名 代表取締役 井⼿康貴 事業内容 サイバーセキュリティ関連サービス 資本⾦ 2億5110万円(資本準備⾦含む)
  5. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n  セキュリティの⼒で信頼をつなげ、 クリエイティブな社会を実現する

    Mission
  6. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n  プロフェッショナルサービス n

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

    https://flatt.tech/assessment/detail
  8. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n  Flatt Security

    Learning Platform https://flatt.tech/learning_platform/
  9. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n  https://flatt.tech/ https://flattsecurity.hatenablog.com/

    Flatt Security HP Blog
  10. 本⽇の内容 

  11. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 本⽇の内容について  https://flattsecurity.hatenablog.com/entry/cloud_security_aws_case

  12. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 本⽇の内容について  n

    Serverless ApplicationとSecurity n 解説に利⽤するサンプルアプリについて n Cognitoへの攻撃⼿法と対策 n まとめ
  13. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 発表内容を要約  サーバーレスアプリケーションで

    ⾒落としがち脆弱性や 埋め込みやすい場所を 集めてきたから⾒てくれ!!
  14. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 本発表の視点について  発表で触れること

    n 設定不備やアプリケーションの脆弱性によって 引き起こされる機密性や完全性の侵害 発表で触れないこと n ロギング関連 n 耐障害性 n 可⽤性
  15. Serverless Applicationと Security 

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

    N#BB4΍4FSWFSMFTTBQQMJDBUJPO
  17. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n Serverless application 

    ઐ໳ੑʹಛԽͨ͠αʔϏεͷ૊Έ߹Θͤ
  18. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n  IUUQTBXTBNB[PODPNKQDPNQMJBODFTIBSFESFTQPOTJCJMJUZNPEFM

  19. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 責任共有モデル  IUUQTEBXTTUBUJDDPNTFSWFSMFTTKQ4FDVSJUZ0WFSWJFXPG"84-BNCEB@+1QEG

  20. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 責任共有モデル  IUUQTEBXTTUBUJDDPNTFSWFSMFTTKQ4FDVSJUZ0WFSWJFXPG"84-BNCEB@+1QEG

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

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

    Serverless Applicationへの脅威と攻撃 n アプリケーションの脆弱性対策 n 開発したアプリケーションへの攻撃 n 利⽤するライブラリへの攻撃 n 利⽤するサービスの設定不備 n 設定不備による直接的な攻撃 n 設定不備による間接的な攻撃 etc … Amazon Cognito
  23. 解説に利⽤する サンプルアプリについて 

  24. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n Serverlessで動作する アプリケーション例 

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

  26. Cognitoへの 攻撃⼿法と対策 

  27. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n Cognitoへの攻撃⼿法の例  n

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

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

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

  31. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 本来のアカウント作成フローからの逸脱 

  32. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 本来のアカウント作成フローからの逸脱  本来のアカウント作成フロー

    1. User AがUser Bを招待 2. User Bは新規登録のため /registerを経由し新規登録 3. Cognitoから初期パスワードが 発⾏されて新規登録完了 6TFS#
  33. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n  クローズドなアプリケーションでCognitoを 利⽤している場合

    攻撃者はどのような視点で攻撃してくるでしょうか?
  34. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 本来のアカウント作成フローからの逸脱  攻撃者(⾃分)が選んだフロー

    1. 直接CognitoのAPIを実⾏し 新規登録を⾏う 6TFS" ࣗ෼
  35. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 本来のアカウント作成フローからの逸脱 

  36. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 本来のアカウント作成フローからの逸脱  事象

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

    なぜ⾃⼰サインアップが許可されているのがわかったのか?
  38. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 本来のアカウント作成フローからの逸脱  ユーザーに⾃⼰サインアップを許可する

    管理者のみにユーザーの作成を許可する
  39. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 本来のアカウント作成フローからの逸脱  エラー⽂に必要な属性や情報が表⽰されるので最低限⼊⼒すると新規ユーザーが作成できる

    実際にEmailには検証コードが⾶んでくる
  40. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 本来のアカウント作成フローからの逸脱  実際にEmailのVerifyまで実施できる

  41. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n 本来のアカウント作成フローからの逸脱  対策

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

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

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

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

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

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

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

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

  50. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n Cognito User Poolにおける

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

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

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

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

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

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

    ユーザー属性の意図しない書き換え 
  57. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n  Cognito User

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

    ユーザー属性の意図しない書き換え  対策 アプリクライアントには必要最⼩限かつ認可や権限に関連する属性の権限を与えない または、認可や権限に関連する値を推測可能なものにしない
  59. まとめ 

  60. Security-JAWS 第20回 Session: 03 Serverless applicationとセキュリティ @a_zara_n まとめ  主題

    n mBaaS(Amplify)やServerless applicationで利⽤されるAmazon Cognitoにおける攻撃や脅威 攻撃例 n 本来のアカウント作成フローからの逸脱 n Cognito User Poolにおけるユーザー属性の意図しない書き換え 対策と結論 n アプリケーションの設計に合わせて設定を適切
  61. Thank you  Flatt Securiy HP: https://flatt.tech/ 該当記事: https://flattsecurity.hatenablog.com/entry/cloud_security_aws_case