RFC 6819: OAuth 2.0 脅威モデルとセキュリティ考慮事項
RFC 6819 は、OAuth 2.0 の脅威モデルとセキュリティ考慮事項を包括的にまとめた文書です。OAuth 2.0 を安全に実装するための指針を提供します。
第1部: 概要編
RFC 6819 とは何か?
RFC 6819 は、OAuth 2.0 エコシステムにおけるセキュリティ脅威を体系的に分類し、それぞれの対策を提示した文書です。
RFC 6749(OAuth 2.0 Core)のセキュリティ考慮事項を大幅に拡張し、実装者が注意すべき点を詳細に解説しています。
なぜ重要なのか?
OAuth 2.0 は多くのコンポーネント(クライアント、認可サーバー、リソースサーバー)が連携するため、攻撃対象が多岐にわたります。
攻撃対象:
┌──────────┐ ┌──────────────┐ ┌──────────────┐
│ クライアント │ ←→ │ 認可サーバー │ ←→ │ リソースサーバー │
└─────┬────┘ └──────┬───────┘ └──────────────┘
│ │
▼ ▼
┌──────────┐ ┌──────────┐
│ ユーザー │ │ ネットワーク │
└──────────┘ └──────────┘
脅威のカテゴリ
RFC 6819 では、脅威を以下のカテゴリに分類しています。
| カテゴリ | 説明 |
|---|---|
| クライアント関連 | クライアントのなりすまし、資格情報の漏洩 |
| 認可エンドポイント関連 | CSRF、フィッシング、オープンリダイレクタ |
| トークンエンドポイント関連 | 認可コードの漏洩、リプレイ攻撃 |
| リソースアクセス関連 | トークンの盗用、スコープの濫用 |
| ユーザー関連 | フィッシング、セッションハイジャック |
第2部: 主要な脅威と対策
1. クライアントに対する脅威
1.1 クライアント資格情報の漏洩
脅威: client_secret が漏洩し、攻撃者がクライアントになりすます。
攻撃シナリオ:
1. ソースコードリポジトリに client_secret をコミット
2. モバイルアプリのバイナリから抽出
3. ログファイルに記録される
対策:
| 対策 | 説明 |
|---|---|
| 環境変数で管理 | ソースコードに含めない |
| シークレットマネージャー | AWS Secrets Manager, HashiCorp Vault 等 |
| パブリッククライアントでは使用しない | モバイル・SPA では PKCE を使用 |
| 定期的なローテーション | 漏洩時の影響を限定 |