Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
OWASP Top 10 – 認証の不備 in OWASP Okinawa 2018.6.8
Search
Tadashi SHIROMA
June 08, 2018
Programming
680
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
More Decks by Tadashi SHIROMA
See All by Tadashi SHIROMA
OWASPRiskRatingMethodology入門
shiromat
0
810
Other Decks in Programming
See All in Programming
FreeBSDでZabbixを動かす.pdf
kenkino
0
240
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
110
Webの地図
yosuke_furukawa
PRO
6
4.4k
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
340
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
270
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
210
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
160
Jetpack Compose メカニズム
skydoves
0
400
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
140
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
3
340
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
4.3k
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
180
Featured
See All Featured
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
840
Become a Pro
speakerdeck
PRO
31
6.2k
Discover your Explorer Soul
emna__ayadi
2
1.3k
Scaling GitHub
holman
464
140k
Embracing the Ebb and Flow
colly
88
5.2k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
480
Balancing Empowerment & Direction
lara
6
1.3k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
570
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
930
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
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の各種ガイドラインを参考にして、不備がないかチェック