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

OWASP Top 10 – 認証の不備 in OWASP Okinawa 2018.6.8

OWASP Top 10 – 認証の不備 in OWASP Okinawa 2018.6.8

Summary of OWASP Top 10 A2:2017 Broken Authentication and Session Management

Tadashi SHIROMA

June 08, 2018
Tweet

More Decks by Tadashi SHIROMA

Other Decks in Programming

Transcript

  1. 2 自己紹介: Who am I?  城間 政司(しろま ただし) 

    出身:沖縄県西原町、琉球大学工学部情報工学科卒  専攻・興味: デジタルアイデンティティ、ID連携(OAuth2, OpenID Connect等)、 セキュリティリスクアセスメント、リバースエンジニアリング  趣味:バランスボールチェア(2009-)  Twitter: @shiropanman Copyright 2018 Tadashi Shiroma Proprietary
  2. 4 OWASP Top 10の推移 1 1 1 2 3 7

    3 2 2 4 4 5 8 6 5 6 6 9 9 7 6 3 8 7 5 4 8 10 2010 2013 2017 OWASP Top 10 2010-2017 インジェクション XSS(クロスサイトスクリプティング) 認証の不備 安全でないオブジェクト直接参照 CSRF 不適切なセキュリティ設定 既知の脆弱性のあるコンポーネントの使用 機微な情報の漏えい、安全でない暗号、保存 アクセス制御の不備 XML外部エンティティ参照(XXE) 安全でないシリアライゼーション 不十分なロギングとモニタリング
  3. 5 OWASP Top 10の推移 1 1 2 2 4 4

    4 2 2 10 8 7 5 3 3 7 3 2 2 4 4 1 2 3 7 5 5 6 6 2 1 1 1 7 7 6 8 8 8 7 6 3 10 10 6 5 6 10 10 6 9 9 10 10 9 9 6 3 4 8 10 5 5 8 9 10 10 3 2003 2004 2007 2010 2013 2017 OWASP Top 10 2003-2017 許可されていない入力 安全でないオブジェクト直接参照 アクセス制御の不備 認証の不備 XSS(クロスサイトスクリプティング) バッファオーバーフロー インジェクション 不適切なエラー処理 機微な情報の漏えい、安全でない暗号、保存 不適切なセキュリティ設定 既知の脆弱性のあるコンポーネントの使用 不適切な設定管理 機微な情報の漏えい、不適切な通信、トランスポート層保護 XML外部エンティティ参照(XXE) 安全でないシリアライゼーション 不十分なロギングとモニタリング CSRF サービス妨害
  4. 7 認証とは?  認証(にんしょう)とは、何かによって、 対象の正当性を確認する行為を指す。 (出典:Wikipedia)  Webサービスでの認証とは? 一般的には、ユーザとそのユーザが主張するアカ ウントの紐づけが正しいものか確認するプロセス

    他の例として、Web APIにアクセスするときに許 可されたWebサービスかどうかを確認する…など もある →ユーザの認証だけとは限らない サービスにログイン したいです Webサービスのユーザ認証の流れ 認証される人 IDはjohn パスワードは*******です 認証される人 IDとパスワードを 教えてください 認証する人 認証しました このあとはこのチケットを 提示してください 認証する人
  5. 9 認証の不備  不十分なパスワードポリシー 数字だけのパスワードを許可 例:12345678 よくあるパスワードを許可 例:password123  非暗号化な通信上でのパスワード送受信

    http通信上のログイン  認証システムの不備 無限にログイン試行が可能  セッション管理の不備 ログアウト時にセッションIDが無効化されない URLにセッションIDが含まれる 例:jsessionid…
  6. 10 攻撃シナリオの例  攻撃シナリオ1 – アカウントリスト攻撃 攻撃シナリオ1.5 – ブルートフォース攻撃 攻撃シナリオ1.5

    – パスワードスプレー攻撃  攻撃シナリオ2 – セッションハイジャック攻撃 攻撃シナリオ2.5 – セッションフィクセーション攻撃  攻撃シナリオ3 – データベースへのアクセス  攻撃シナリオ4 – プロトコルの実装不備
  7. 18 対策 – OWASP Top 10 2017より  自動化された攻撃、アカウントリスト攻撃、総当たり攻撃、盗まれたユーザ名/パスワード を再利用した攻撃を防ぐために、できる限り多要素認証を実装する。

     初期アカウント(特に管理者ユーザ)を残したまま出荷およびリリースしない。  新しいパスワードまたは変更後のパスワードがTop 10000 worst passwordsのリストにな いか照合するようなパスワード検証を実装する。  NIST SP 800-63 B's guidelines in section 5.1.1 for Memorized Secretsや最近の調査に 基づくパスワードの方針に、パスワードの長さ、複雑性、定期変更に関するポリシーを適合 させる。  アカウント列挙攻撃への対策としてユーザ登録、パスワード復旧、APIを強化するため、す べての結果表示において同じメッセージを用いる。  パスワード入力の失敗に対して回数に制限するか、段階的に遅延察せる。すべてのログイン 失敗を記録するとともに、アカウントリスト攻撃、総当たり攻撃、または他の攻撃を検知し たときにアプリケーション管理者に通知する。  サーバサイドで、セキュアな、ビルトインのセッション管理機構を使い、ログイン後には新 たに高エントロピーのランダムなセッションIDを生成する。セッションIDはURLに含める べきではなく、セキュアに保存する。また、ログアウト後や、アイドル状態、タイムアウト したセッションを無効にする。
  8. 20 対策(2/5) – 初期パスワード/簡単なパスワードの禁止  新しいパスワードまたは変更後のパスワード がTop 10000 worst passwordsのリストに

    ないか照合するようなパスワード検証を実装 する。  初期アカウント(特に管理者ユーザ)を 残したまま出荷およびリリースしない 出典:#mkmk_nmatayoshi 出典:github - danielmiessler/SecLists
  9. 21 対策(3/5) – 公的ガイドラインへの準拠  NIST SP 800-63 B's guidelines

    in section 5.1.1 for Memorized Secretsや最近の調査に 基づくパスワードの方針に、パスワードの長さ、複雑性、定期変更に関するポリシーを適合 させる。
  10. 22 対策(4/5) – その他  アカウント列挙攻撃への対策としてユーザ登録、パスワード復旧、APIを強化するため、す べての結果表示において同じメッセージを用いる。 →ダメな例:ユーザのIDが存在するかしないかでログイン失敗時のメッセージが変わる  パスワード入力の失敗に対して回数に制限するか、段階的に遅延させる。すべてのログイン

    失敗を記録するとともに、アカウントリスト攻撃、総当たり攻撃、または他の攻撃を検知し たときにアプリケーション管理者に通知する。  サーバサイドで、セキュアな、ビルトインのセッション管理機構を使い、ログイン後には新 たに高エントロピーのランダムなセッションIDを生成する。セッションIDはURLに含める べきではなく、セキュアに保存する。また、ログアウト後や、アイドル状態、タイムアウト したセッションを無効にする。 →認証や暗号に関するシステムは独自に開発するよりも、 ライブラリやフレームワークの利用を推奨
  11. 23 対策(5/5) – リスクベース認証  ログイン場所や時間など、ユーザの普段のログイン情報/行動と異なる場合に、 多要素認証を要求したり、アラートメールをユーザに送信する  例えば… 日本国内からサービスを利用していたアカウントに、海外からのログインがあった

    →「海外からログインがありました!」とユーザにメールで注意喚起 アクセス記録がない端末から初めてログインがあった →ID&パスワードによる認証に加えて、CAPTCHAによる認証を追加
  12. 24 対策 – 詳しくはOWASPの各種ガイドラインで!  ASVS V2 Authentication Verification Requirements

    https://www.owasp.org/index.php/ASVS_V2_Authentication  ASVS V3 Session Management https://www.owasp.org/index.php/ASVS_V3_Session_Management  Authentication Cheat Sheet https://www.owasp.org/index.php/Authentication_Cheat_Sheet  Forgot Password Cheat Sheet https://www.owasp.org/index.php/Forgot_Password_Cheat_Sheet  Session Management Cheat Sheet https://www.owasp.org/index.php/Session_Management_Cheat_Sheet  OWASP Development Guide https://www.owasp.org/index.php/Projects/OWASP_Development_Guide  Testing for authentication https://www.owasp.org/index.php/Testing_for_authentication