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

OpenID Connect活用時のなりすまし攻撃対策の検討 - OpenID Summit ...

yuasa
January 19, 2024
550

OpenID Connect活用時のなりすまし攻撃対策の検討 - OpenID Summit Tokyo 2024

OpenID Summit Tokyo 2024にて発表した「OpenID Connect活用時のなりすまし攻撃対策の検討」の資料です。

yuasa

January 19, 2024
Tweet

Transcript

  1. 2 湯浅 潤樹(Junki Yuasa) ⾃⼰紹介 l 奈良先端科学技術⼤学院⼤学 M2 l 趣味は散歩,

    ランニング, 温泉, コメダ l OpenID Connectのセキュリティに関する研究 l OIDC実装の脆弱性検証ツール OSBT[1] l OIDC利⽤時のなりすまし攻撃対策 l SECCON Beginners l セキュリティ教育活動 X : @melonattacker [1] https://github.com/oidc-scenario-based-tester/osbt
  2. 4 ソーシャルログインの⼿段として広く普及している ソーシャルログインにおけるOpenID Connectの活⽤ 通常のログイン ソーシャルログイン webサービスA webサービスB webサービスC 認証情報

    認証情報 認証情報 webサービスA webサービスB webサービスC 認証情報 アカウント管理の負担⼤ アカウント管理の負担⼩ OpenID Connect
  3. 13 研究⽬的 ID/セッショントークンを⽤いたなりすましを防ぐ機構 OIPM: OpenID Connect Impersonation Prevention Mechanism[3] 正規ユーザ

    攻撃者 Webサイト (RP) トークン 窃取した トークン 許可 拒否 アクセス 制御機構 OIPM [3] https://github.com/melonattacker/oidc-access-control
  4. 14 IDトークンを⽤いたなりすまし: IDトークンの窃取・使⽤ RP 正規ユーザの ブラウザ IdP 攻撃者 XSS経由で窃取 端末を侵害して窃取

    脆弱性 脆弱性 正規の IDトークン 正規の IDトークン 認証フロー経由で窃取 攻撃者は様々な⽅法で正規ユーザのIDトークンを窃取
  5. 17 IDトークンを⽤いたなりすまし: IdP署名鍵の窃取・使⽤ RP IdP 攻撃者 IdPの署名鍵を⽤いて正規ユーザのIDトークンを作成・使⽤ 脆弱性 IdP署名鍵 正規の

    IDトークン IdPを侵害して署名鍵を窃取 正規のIDトークンを作成 作成したIDトークンを 送信して認証
  6. 18 IDトークンを⽤いたなりすまし攻撃の既存対策⼿法とその課題 対策⼿法 概要 真正性の 保証 IDトークンの 窃取・使⽤へ の耐性 認証情報の

    窃取・使⽤ への耐性 IdP署名鍵の 窃取・使⽤ への耐性 ユーザの 端末侵害 への耐性 OIDCのnonce値 による対策 nonce値を 使⽤して再送 を防ぐ なし あり ※仕様上は 防げる なし なし なし Openpubkey[4] (追加認証なし) 署名検証で なりすましを 防ぐ あり あり なし なし なし Openpubkey[4] (追加認証あり) 署名検証+ 他パーティに よる認証 あり あり あり あり なし ユーザの端末侵害がなされる場合になりすましを防げない [4] Ethan Heilman, Lucie Mugnier, Athanasios Filippidis, Sharon Goldberg et al, "OpenPubkey: Augmenting OpenID Connect with User held Signing Keys", Cryptology ePrint Archive, 2023.
  7. 19 IDトークンを⽤いたなりすまし攻撃への対策 ユーザ リライング パーティ (RP) メールアドレス所有確認 (本⼈確認) ユーザ登録 IDトークン

    秘密鍵 永続的な秘密鍵を ユーザに付与 秘密鍵の所有を確認して本⼈確認 秘密鍵の 所有証明 ログイン IDトークン 原因 : IDトークンの送信が本⼈によるものかどうかを考慮しない 検証 : ユーザ登録時に与える情報のログイン時の所有検証
  8. 20 IDトークンを⽤いたなりすまし攻撃への対策 ユーザ Webサイト (RP) ユーザ登録時 メールアドレス所有確認 (本⼈確認) IDトークン ユーザ登録の際に秘密鍵と公開鍵を作成

    公開鍵 公開鍵のみRPに送信 秘密鍵 公開鍵 秘密鍵, 公開鍵を作成 パスワードレス認証規格 のFIDOを利⽤ ※画像 : https://ftsafe.co.jp/products/fido/ 認証デバイス に秘密鍵を保存 (窃取は困難) ※
  9. 21 IDトークンを⽤いたなりすまし攻撃への対策 Webサイト (RP) 認証時(ログイン) 公開鍵 署名を検証 IDトークン 署名 署名を送信

    ユーザ 秘密鍵を⽤いて 署名作成 秘密鍵 署名作成時 のジェスチャ (PIN, 指紋等) ユーザ登録の際に作成した秘密鍵の所有を署名で確認 署名の検証で 秘密鍵の所有を確認
  10. 22 セッショントークンを⽤いたなりすまし : XSSによる窃取・使⽤ RP 正規ユーザの ブラウザ 攻撃者 XSS経由で窃取 脆弱性

    正規の セッション トークン XSS経由でセッショントークンを窃取 窃取したセッショントークンを 攻撃者のブラウザから送信
  11. 23 セッショントークンを⽤いたなりすまし : 端末侵害による窃取・使⽤ RP 正規ユーザの ブラウザ 攻撃者 マルウェアなどを介して 端末を侵害

    正規の セッション トークン ユーザ端末の侵害によりセッショントークンを窃取 窃取したセッショントークンを 正規ユーザのブラウザから送信
  12. 24 セッショントークンを⽤いたなりすまし攻撃の既存対策⼿法とその課題 対策⼿法 概要 真正性の保証 XSSによる 窃取・使⽤ への耐性 ユーザの 端末侵害

    への耐性 SessionShield[5] ホスト側の仕組みで 誤送信を防ぐ なし あり なし Cookiext[6] なし あり なし One-time cookies[7] 署名検証で なりすましを防ぐ あり あり なし SecSess[8] あり あり なし ユーザの端末侵害がなされる場合になりすましを防げない [5] Nick Nikiforakis, Wannes Meert, Yves Younan, Martin Johns, Wouter Joosen, "SessionShield: Lightweight Protection against Session Hijacking", In Proceedings of the 3rd International Symposium on Engineering Secure Software and Systems (ESSoS 2011), 2011. [6] Michele Bugliesi, Stefano Calzavara, Riccardo Focardi, Wilayat Khan, "CookiExt: Patching the browser against session hijacking attacks", Journal of Computer Security, vol. 23, no. 4, pp. 509-537, 2015. [7] Italo Dacosta, Saurabh Chakradeo, Mustaque Ahamad, Patrick Traynor, "One-time cookies: Preventing session hijacking attacks with stateless authentication tokens", ACM Transactions on Internet Technology, vol. 12, no. 1, pp. 1-24, 2012. [8] Philippe De Ryck, Lieven Desmet, Frank Piessens, Wouter Joosen, "SecSess: Keeping your Session Tucked Away in your Browser", In Proceedings of the 30th Annual ACM Symposium on Applied Computing (SAC 2015), 2015.
  13. 25 セッショントークンを⽤いたなりすまし攻撃への対策 原因 : セッショントークンの送信が本⼈によるものかどうかを考慮しない 検証 : 認証時に与える情報の認証後における所有検証 Webサイト (RP)

    秘密鍵, 秘密情報の所有検証による 本⼈確認 ⼀時的な秘密情報をユーザに付与 認証時 秘密鍵の 所有証明 IDトークン ジェスチャ必須 認証後 機密性の⾼い操作 のみジェスチャ要求 秘密情報の 所有証明 セッション トークン 秘密鍵の 所有証明
  14. 26 セッショントークンを⽤いたなりすまし攻撃への対策 : 通常時 Ϣʔβ 31 IPアドレス, デバイス情報を保存 署名 IDトークン

    公開鍵 秘密情報 セッショントークン セッショントークンと秘密情報を返送 ユーザ認証フェーズ nonce値を要求 nonce値を⽣成, 保存 認証後フェーズ セッショントークンとともにハッシュ値を送信 ハッシュ値 セッショントークン nonce値 nonce値 秘密情報とnonce値 からハッシュ値⽣成 ハッシュ値 を照合 IPアドレス, デバイス情報 の⼀致検証 メモリ上 に保存 秘密情報 ハッシュ値 の再使⽤を防ぐため 正規ユーザの端末 以外からのアクセス を拒否するため ハッシュ値の照合で 秘密情報の所有を検証
  15. 27 セッショントークンを⽤いたなりすまし攻撃への対策 : 機密性の⾼い操作 Ϣʔβ 31 認証後フェーズ (機密性の⾼い操作) nonce値を要求 nonce値

    nonce値を⽣成, 保存 nonce値 ハッシュ値の再送攻撃を防ぐ 秘密情報とnonce値 からハッシュ値⽣成 ハッシュ値の照合 IPアドレス,デバイス情報 の⼀致検証 + 公開鍵を⽤いた署名検証 秘密鍵を⽤いて署名⽣成 秘密鍵 ジェスチャ (PIN, 指紋等) セッショントークンとともに ハッシュ値, 署名を送信 ハッシュ値 セッショントークン 署名 端末侵害による有効な ハッシュ値⽣成に対処
  16. 28 IDトークンを⽤いたなりすまし攻撃の既存対策⼿法の⽐較 対策⼿法 概要 真正性の 保証 IDトークンの 窃取・使⽤へ の耐性 認証情報の

    窃取・使⽤ への耐性 IdP署名鍵の 窃取・使⽤ への耐性 ユーザの 端末侵害 への耐性 OIDCのnonce値 による対策 nonce値を 使⽤して再送 を防ぐ なし あり ※別RPへ送 信は防げない なし なし なし Openpubkey[4] (追加認証なし) 署名検証で なりすましを 防ぐ あり あり なし なし なし Openpubkey[4] (追加認証あり) 署名検証+ 他パーティに よる認証 あり あり あり あり なし 本対策⼿法 OIPM FIDOを⽤いた 署名検証+ メールアドレ ス所有確認 あり あり あり あり あり OIPMはユーザの端末侵害時にもIDトークンを⽤いたなりすましを防ぐ
  17. 29 セッショントークンを⽤いたなりすまし攻撃の既存対策⼿法との⽐較 対策⼿法 概要 真正性の保証 XSSによる 窃取・使⽤ への耐性 ユーザの 端末侵害

    への耐性 SessionShield[1] ホスト側の仕組みで 誤送信を防ぐ なし あり なし Cookiext[2] なし あり なし One-time cookies[3] 署名検証で なりすましを防ぐ あり あり なし SecSess[4] あり あり なし 本対策⼿法 OIPM ハッシュ値検証, FIDOを⽤いた 署名検証 あり あり あり ※再認証 要求時のみ OIPMはユーザの端末侵害時にもセッショントークンを⽤いたなりすましを防ぐ
  18. 30 今後の課題 l ユーザの利便性についての課題 l ソーシャルログインにおいてメールアドレス所有確認を⾏うことは, ユー ザの利便性を低下させる l ユーザの利便性を低下させずに,

    本⼈確認を⾏うことが望ましい l IdP署名鍵が窃取された際のユーザ登録における課題 l IdP署名鍵を⽤いてRPに未登録のユーザになりすますことが可能 l 攻撃者のメールアドレス, 正規ユーザの識別⼦を設定したIDトークンを使⽤ l この攻撃への対策を検討する必要がある 利便性の向上と未登録ユーザへのなりすましが課題
  19. 31 OpenID Connect利⽤時のなりすまし攻撃対策を提案 l 問題 l RPにおける認証時に不正取得したIDトークンを⽤いたなりすましが可能 l 認証後に不正取得したセッショントークンを⽤いたなりすましが可能 l

    既存の対策⼿法 l ユーザの端末侵害がなされる場合になりすましを防げない l 対策⼿法 l 認証時 : FIDO秘密鍵を⽤いた署名を検証 l 認証後 : ハッシュ値の検証, IPアドレスとデバイス情報の⼀致検証 l 認証後の機密性の⾼い操作 : FIDO秘密鍵を⽤いた署名検証を追加 まとめ
  20. 32 参考⽂献 • [1] https://github.com/oidc-scenario-based-tester/osbt • [2] https://qiita.com/melonattacker/items/ba6718feb8864dbdd2bf • [3]

    https://github.com/melonattacker/oidc-access-control • [4] Ethan Heilman, Lucie Mugnier, Athanasios Filippidis, Sharon Goldberg et al, "OpenPubkey: Augmenting OpenID Connect with User held Signing Keys", Cryptology ePrint Archive, 2023. • [5] Nick Nikiforakis, Wannes Meert, Yves Younan, Martin Johns, Wouter Joosen, "SessionShield: Lightweight Protection against Session Hijacking", In Proceedings of the 3rd International Symposium on Engineering Secure Software and Systems (ESSoS 2011), 2011. • [6] Michele Bugliesi, Stefano Calzavara, Riccardo Focardi, Wilayat Khan, "CookiExt: Patching the browser against session hijacking attacks", Journal of Computer Security, vol. 23, no. 4, pp. 509- 537, 2015. • [7] Italo Dacosta, Saurabh Chakradeo, Mustaque Ahamad, Patrick Traynor, "One-time cookies: Preventing session hijacking attacks with stateless authentication tokens", ACM Transactions on Internet Technology, vol. 12, no. 1, pp. 1-24, 2012. • [8] Philippe De Ryck, Lieven Desmet, Frank Piessens, Wouter Joosen, "SecSess: Keeping your Session Tucked Away in your Browser", In Proceedings of the 30th Annual ACM Symposium on Applied Computing (SAC 2015), 2015. • 画像 • https://flaticon.com • https://ftsafe.co.jp/products/fido/