authentication-testing について
認証機能を持つアプリを対象に、許可を得たテスターが認証全体のライフサイクルを調べるセキュリティテスト用スキルです。リセットやフェデレーションも対象とし、再現可能なリクエストとアカウント乗っ取りへの影響を記録します。
主な機能
- 01登録とログインのフローを検査
- 02セッショントークンと無効化をテスト
- 03パスワードリセットを確認
- 04MFAとフェデレーションを検査
- 05JWT処理とレート制限を検証
- 06フロー、リクエスト、乗っ取り影響を記録
活用シーン
- 01アプリの登録とログインをテスト
- 02リセットやMFA回避のリスクを確認
- 03OAuth、SSO、JWTの実装を評価
- 04再現可能なアカウント乗っ取り脆弱性を記録
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mn-youssef/ security-skills --skill authentication-testingインストール後、Claude Code で/authentication-testingを入力して読み込まれたか確認します。
同梱ファイルreferences/auth-attacks.md
詳細
認証テスト(FIND/EXPLOIT — OWASP A07)
概要
「本人だと名乗る人物が本当に本人か」を突破します。アカウント乗っ取り(ATO)は最重要級の攻撃です。認証の欠陥が一つあるだけで、すべてにアクセスできることも少なくありません。ログインフォームだけでなく、ID のライフサイクル全体をテストしてください。
基本原則: 認証はページではなく、フローです。脆弱性が潜んでいるのはパスワードの確認だけでなく、リセット、更新、フェデレーション、状態遷移です。
適用する場合/スキップする場合
- 適用する場合: ログイン、セッション、アカウント、トークン/JWT、OAuth/SSO、パスワードリセット、MFA のいずれかの ID 機構がアプリにある場合。
- スキップする場合: 認証機能がなく、完全に匿名で利用できるアプリの場合 → N/A。
- N/A の場合: 「authentication-testing: N/A — no authentication surface」と報告して終了します。
⚠️ 認可
自分のアカウント/アプリを使用してください。実在するユーザーや第三者の認証情報を使ったクレデンシャルスタッフィングは行わないでください。ブルートフォースを行う場合は、自分のテストアカウントだけを対象にし、試行を制限してください。
テストする対象(ライフサイクル全体)
- 登録 — ユーザー名/メールアドレスの列挙、脆弱なパスワードポリシー、重複/正規化。
- ログイン — レート制限、ロックアウト、エラーメッセージによる列挙、デフォルト認証情報。
- セッション — トークンのエントロピー、セッション固定(ログイン時にローテーションされるか)、ログアウト/リセット時の無効化、Cookie フラグ。
- パスワードリセット — トークンのエントロピー/有効期限/再利用、リセットリンクに対するホストヘッダー汚染、ユーザー ID の差し替え。
- MFA/2FA — フローのスキップ、レスポンスの改ざん、バックアップコードの悪用、OTP のブルートフォース/レート制限、競合状態によるバイパス。
- OAuth/OIDC/SAML/SSO —
redirect_uriの検証、state/CSRF、トークン漏えい、SAML 署名。 - JWT —
alg:none、アルゴリズムの混同、脆弱なシークレット、署名の未検証、有効期限/失効機能の欠如。
各対象の具体的な手順については、references/auth-attacks.md を参照してください。
クイックリファレンス — 影響の大きい脆弱性
| 脆弱性 | テスト | 影響 |
|---|---|---|
| ユーザー列挙 | 有効なユーザーと無効なユーザーでレスポンス/応答時間が異なる | 標的型攻撃 |
| レート制限なし | ログイン/OTP の試行を何度も行える | ブルートフォース/ATO |
| セッション固定 | ログイン後もセッション ID が変わらない | セッション乗っ取り |
| リセット汚染 | Host/X-Forwarded-Host によってリセットリンクのドメインを制御できる | 盗まれたトークンによる ATO |
| リセット ID の差し替え | 自分のトークン/フローを使って被害者のパスワードをリセットできる | ATO |
| MFA バイパス | 手順のスキップ/"mfa":false の改ざん/コードの再利用 | 2FA を突破した ATO |
| OAuth オープンリダイレクト | redirect_uri を攻撃者のドメインにするとコード/トークンが漏えいする | ATO |
| JWT 偽造 | alg:none/HS-RS の混同/脆弱なシークレットを受け入れる | 完全ななりすまし |
出力
脆弱性の内容、具体的なフローとリクエスト、該当するライフサイクルの段階、ATO に至るかどうかを記録します。
vulnerability-chaining に備えて、(ユーザー列挙 + レート制限なし + 脆弱なリセット = 完全な ATO などの)脆弱性の連鎖も記録してください。
引き継ぎ
実行中のアプリで active-pentest を使って再現し、vulnerability-chaining で ATO につながる脆弱性を組み合わせます。security-hardening で修正します(bcrypt/argon2、CSPRNG トークン、セッションローテーション、厳格な redirect_uri、検証済み JWT 署名、レート制限 + MFA)。
よくある間違い
- ログイン画面だけをテストする — リセットやフェデレーションのフローは防御が弱く、同様に致命的です。
- JWT をデコードしただけで検証済みだと思い込む — 署名が検証されていることを(改ざんして)確認してください。
- MFA は突破できないと思い込む — バイパスの多くは暗号技術ではなく、フローのロジック上の欠陥です。
- ユーザー列挙をひそかに可能にする、応答時間やエラーの違いを見落とす。