mcpField
A
authentication-testing

authentication-testing

github.com/mn-youssefセキュリティ4969 回インストール20 週間前に更新
リポジトリ

authentication-testing について

認証機能を持つアプリを対象に、許可を得たテスターが認証全体のライフサイクルを調べるセキュリティテスト用スキルです。リセットやフェデレーションも対象とし、再現可能なリクエストとアカウント乗っ取りへの影響を記録します。

主な機能

  1. 01登録とログインのフローを検査
  2. 02セッショントークンと無効化をテスト
  3. 03パスワードリセットを確認
  4. 04MFAとフェデレーションを検査
  5. 05JWT処理とレート制限を検証
  6. 06フロー、リクエスト、乗っ取り影響を記録

活用シーン

  1. 01アプリの登録とログインをテスト
  2. 02リセットやMFA回避のリスクを確認
  3. 03OAuth、SSO、JWTの実装を評価
  4. 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」と報告して終了します。

⚠️ 認可

自分のアカウント/アプリを使用してください。実在するユーザーや第三者の認証情報を使ったクレデンシャルスタッフィングは行わないでください。ブルートフォースを行う場合は、自分のテストアカウントだけを対象にし、試行を制限してください。

テストする対象(ライフサイクル全体)

  1. 登録 — ユーザー名/メールアドレスの列挙、脆弱なパスワードポリシー、重複/正規化。
  2. ログイン — レート制限、ロックアウト、エラーメッセージによる列挙、デフォルト認証情報。
  3. セッション — トークンのエントロピー、セッション固定(ログイン時にローテーションされるか)、ログアウト/リセット時の無効化、Cookie フラグ。
  4. パスワードリセット — トークンのエントロピー/有効期限/再利用、リセットリンクに対するホストヘッダー汚染、ユーザー ID の差し替え。
  5. MFA/2FA — フローのスキップ、レスポンスの改ざん、バックアップコードの悪用、OTP のブルートフォース/レート制限、競合状態によるバイパス。
  6. OAuth/OIDC/SAML/SSO — redirect_uri の検証、state/CSRF、トークン漏えい、SAML 署名。
  7. 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 は突破できないと思い込む — バイパスの多くは暗号技術ではなく、フローのロジック上の欠陥です。
  • ユーザー列挙をひそかに可能にする、応答時間やエラーの違いを見落とす。

コメント