OAuth 2.0 / OIDC 攻撃パターン
OAuth 2.0 と OpenID Connect における代表的な攻撃パターンとその対策をまとめます。
第1部: 認可フロー関連の攻撃
CSRF(Cross-Site Request Forgery)攻撃
攻撃者が被害者のブラウザを使って不正な認可を完了させる攻撃。
攻撃シナリオ:
1. 攻撃者が自分のアカウントで認可フローを開始
2. 認可コードを取得するが、使用しない
3. 被害者に偽の callback URL を踏ませる
https://rp.example.com/callback?code=ATTACKER_CODE
4. 被害者のブラウザで攻撃者の認可コードが使用される
5. 被害者のセッションが攻撃者のアカウントに紐付けられる
結果:
被害者が攻撃者のアカウントで操作
→ 被害者の入力データが攻撃者に送られる
対策:
1. state パラメータを使用
- 認可リクエスト時にランダムな state を生成
- コールバック時に state を検証
- セッションに紐付けて管理
2. PKCE を使用(推奨)
- state に加えて PKCE を使用
- code_verifier はクライアントのみが知っている