Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
OWASP Top 10 – 認証の不備 in OWASP Okinawa 2018.6.8
Tadashi SHIROMA
June 08, 2018
Programming
0
310
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
Share
More Decks by Tadashi SHIROMA
See All by Tadashi SHIROMA
OWASPRiskRatingMethodology入門
shiromat
0
240
Other Decks in Programming
See All in Programming
About Type Syntax Proposal
quramy
1
980
Milestoner
bkuhlmann
1
200
プログラミングを勉強したいと言われたら
yuba_4
0
380
Kotlin KSP - Intro
taehwandev
1
470
脱オブジェクト指向講座(5分LT資料)
kishida
8
11k
Kueue入門/Kueue Introduction
bells17
0
510
dbtとBigQueryで始めるData Vault入門
kazk1018
0
170
TSDサービスRecap ~PMBOK®ガイド第7版超速まるわかりガイド~|ミツエーリンクスTSD
mlctsd
0
100
質とスピード(2022春版、質疑応答用資料付き) / Quality and Speed 2022 Spring Edition
twada
PRO
28
18k
Swift Concurrencyによる安全で快適な非同期処理
tattn
2
280
Improve Build Times in Less Time
zacsweers
6
2.8k
書籍『良いコード/悪いコードで学ぶ設計入門』でエンジニアリングの当たり前を変える
minodriven
3
1k
Featured
See All Featured
Building Applications with DynamoDB
mza
83
4.6k
4 Signs Your Business is Dying
shpigford
169
20k
VelocityConf: Rendering Performance Case Studies
addyosmani
316
22k
How to Ace a Technical Interview
jacobian
265
21k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
119
28k
Stop Working from a Prison Cell
hatefulcrawdad
261
17k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
37
3.2k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
15
910
BBQ
matthewcrist
74
7.9k
WebSockets: Embracing the real-time Web
robhawkes
57
5k
Building an army of robots
kneath
299
40k
What's new in Ruby 2.0
geeforr
336
30k
Transcript
1 OWASP Top 10 – 認証の不備 OWASP Okinawa 2018.6.8 Tadashi
SHIROMA
2 自己紹介: Who am I? 城間 政司(しろま ただし)
出身:沖縄県西原町、琉球大学工学部情報工学科卒 専攻・興味: デジタルアイデンティティ、ID連携(OAuth2, OpenID Connect等)、 セキュリティリスクアセスメント、リバースエンジニアリング 趣味:バランスボールチェア(2009-) Twitter: @shiropanman Copyright 2018 Tadashi Shiroma Proprietary
3 本日の内容 OWASP Top 10と認証の不備について 認証とは? HTTPの認証の仕組み
認証の不備 攻撃シナリオ 対策 まとめ
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) 安全でないシリアライゼーション 不十分なロギングとモニタリング
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 サービス妨害
6 本日の対象者 – 認証の不備 一般ユーザ向け 開発者向け 例:パスワードの使い回しの是非 多要素認証使いましょう 例:セッション管理の注意点 パスワード認証の注意点
7 認証とは? 認証(にんしょう)とは、何かによって、 対象の正当性を確認する行為を指す。 (出典:Wikipedia) Webサービスでの認証とは? 一般的には、ユーザとそのユーザが主張するアカ ウントの紐づけが正しいものか確認するプロセス
他の例として、Web APIにアクセスするときに許 可されたWebサービスかどうかを確認する…など もある →ユーザの認証だけとは限らない サービスにログイン したいです Webサービスのユーザ認証の流れ 認証される人 IDはjohn パスワードは*******です 認証される人 IDとパスワードを 教えてください 認証する人 認証しました このあとはこのチケットを 提示してください 認証する人
8 HTTPな認証の仕組み ログイン時にIDとパスワードを入力・送信し、セッションIDを含むCookieを発行 ログイン後はセッションID(Cookie)でユーザを認識 最近では、IDとパスワードの組み合わせによる認証のほかに、SMSを利用した認証や、 OpenID Connect&OAuth(例:facebookアカウントでログイン)を利用した認証も
9 認証の不備 不十分なパスワードポリシー 数字だけのパスワードを許可 例:12345678 よくあるパスワードを許可 例:password123 非暗号化な通信上でのパスワード送受信
http通信上のログイン 認証システムの不備 無限にログイン試行が可能 セッション管理の不備 ログアウト時にセッションIDが無効化されない URLにセッションIDが含まれる 例:jsessionid…
10 攻撃シナリオの例 攻撃シナリオ1 – アカウントリスト攻撃 攻撃シナリオ1.5 – ブルートフォース攻撃 攻撃シナリオ1.5
– パスワードスプレー攻撃 攻撃シナリオ2 – セッションハイジャック攻撃 攻撃シナリオ2.5 – セッションフィクセーション攻撃 攻撃シナリオ3 – データベースへのアクセス 攻撃シナリオ4 – プロトコルの実装不備
11 攻撃シナリオ1 – アカウントリスト攻撃 任意の方法で入手したアカウント情報を基に、不正ログインを試みる攻撃 サイトA サイトB サイトC アカウント情報
id: trump pw: donald123 か… id: trump pw: donald123 id: trump pw: donald123 id: trump pw: donald321
12 攻撃シナリオ1.5 – ブルートフォース攻撃 よくあるパスワードを使ってログイン試行する攻撃 アカウントリスト攻撃のようにアカウント情報は必要ない 総当たり攻撃とも呼ばれる
出典:github - danielmiessler/SecLists
13 攻撃シナリオ1.5 – パスワードスプレー攻撃 パスワードを固定してログインを試行する攻撃 リバースブルートフォース 出典:https://japan.zdnet.com/article/35117214/ 出典:http://tech.nikkeibp.co.jp/it/atcl/column/14/346926/090100042/
14 攻撃シナリオ2 – セッションハイジャック攻撃 任意の方法でセッションIDを盗み、攻撃者がユーザになりすます攻撃 セッションIDの入手方法例 http通信を盗聴 XSSを利用してセッションIDのCookieを送信
セッションIDの生成パターンから推測 セッションフィクセーション攻撃(後述)
15 攻撃シナリオ2.5 – セッションフィクセーション攻撃 ユーザのセッションIDを攻撃者が指定したもので Webサービスを利用させ、攻撃者自身も同じセッ ションIDを使うことでアカウントを乗っ取る攻撃 URLでCookieを指定できるサイトや、
.co.jpドメインのCookieを受け入れるなど 任意のCookieを指定できる脆弱性を悪用
16 攻撃シナリオ3 – データベースへのアクセス 脆弱性などを突かれるなどして、内外部の攻撃者にデータベースへアクセスされる パスワードをハッシュ化していない場合は容易にパスワードを入手できる ID Password
User1 Aiueo User2 Pass1234 User3 qwerty User4 abc123
17 攻撃シナリオ4 – プロトコルの実装不備 facebookやtwitterのアカウントを使ったログインなどで使われている OAuthやOpenID Connectのプロトコルの実装の不備を突いた攻撃 トークン置き換え攻撃やCSRFによる攻撃などがある
トークン置き換え攻撃の内容 出典:http://www.atmarkit.co.jp/ait/articles/1710/24/news011_2.html
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に含める べきではなく、セキュアに保存する。また、ログアウト後や、アイドル状態、タイムアウト したセッションを無効にする。
19 対策(1/5) – 多要素認証の導入 簡単なパスワードや使い回しの禁止、パスワード管理ソフトの使用などの ユーザ側の対策には限界がある IDとパスワードの組み合わせ以外の認証要素を用いた多要素認証で対策
20 対策(2/5) – 初期パスワード/簡単なパスワードの禁止 新しいパスワードまたは変更後のパスワード がTop 10000 worst passwordsのリストに
ないか照合するようなパスワード検証を実装 する。 初期アカウント(特に管理者ユーザ)を 残したまま出荷およびリリースしない 出典:#mkmk_nmatayoshi 出典:github - danielmiessler/SecLists
21 対策(3/5) – 公的ガイドラインへの準拠 NIST SP 800-63 B's guidelines
in section 5.1.1 for Memorized Secretsや最近の調査に 基づくパスワードの方針に、パスワードの長さ、複雑性、定期変更に関するポリシーを適合 させる。
22 対策(4/5) – その他 アカウント列挙攻撃への対策としてユーザ登録、パスワード復旧、APIを強化するため、す べての結果表示において同じメッセージを用いる。 →ダメな例:ユーザのIDが存在するかしないかでログイン失敗時のメッセージが変わる パスワード入力の失敗に対して回数に制限するか、段階的に遅延させる。すべてのログイン
失敗を記録するとともに、アカウントリスト攻撃、総当たり攻撃、または他の攻撃を検知し たときにアプリケーション管理者に通知する。 サーバサイドで、セキュアな、ビルトインのセッション管理機構を使い、ログイン後には新 たに高エントロピーのランダムなセッションIDを生成する。セッションIDはURLに含める べきではなく、セキュアに保存する。また、ログアウト後や、アイドル状態、タイムアウト したセッションを無効にする。 →認証や暗号に関するシステムは独自に開発するよりも、 ライブラリやフレームワークの利用を推奨
23 対策(5/5) – リスクベース認証 ログイン場所や時間など、ユーザの普段のログイン情報/行動と異なる場合に、 多要素認証を要求したり、アラートメールをユーザに送信する 例えば… 日本国内からサービスを利用していたアカウントに、海外からのログインがあった
→「海外からログインがありました!」とユーザにメールで注意喚起 アクセス記録がない端末から初めてログインがあった →ID&パスワードによる認証に加えて、CAPTCHAによる認証を追加
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
25 まとめ 認証の不備について 攻撃シナリオや対策の紹介 IDとパスワードによる認証やセッション管理などの不備が攻撃に利用される 多要素認証の提供や弱いパスワードの禁止、適切なセッション管理などの対策が必要 OWASPの各種ガイドラインを参考にして、不備がないかチェック