注目★★★★★GitHub Advisory
Auth.js の認証バイパス脆弱性、Unicode 正規化前の検証が原因
30秒で把握
- 1Auth.js メール認証で Unicode 正規化前の @記号検証を悪用され、異なるアドレスへのマジックリンク送信を可能に
- 2next-auth < 4.24.14 / @auth/core < 0.41.3 でデフォルト normalizeIdentifier を使用している場合に影響
- 3passwordless 認証ユーザーは認証フロー・受信者チェック・バージョン更新を即座に検証
要約
Auth.js のメール/マジックリンク認証において、Unicode 正規化前にメールアドレスを検証することで、非 ASCII の @記号(U+0040 に正規化される Unicode 文字)をバイパス可能な脆弱性が存在する。攻撃者は被害者のメールアドレスを知っていれば、正規化後に異なるメールアドレスに解釈されるマジックリンクをリクエストでき、アカウント乗っ取りが可能になる。影響を受けるのは next-auth 4.0.0 以上 4.24.14 未満、または @auth/core 0.1.0 以上 0.41.3 未満で、デフォルトの normalizeIdentifier を使用しており、メール送信時に Unicode 正規化を行うライブラリを使用している場合。
あなたへの影響
next-auth または @auth/core を利用して passwordless (メール/マジックリンク) 認証を実装していれば、バージョン確認と更新は即日対応推奨。
推奨:自前の normalizeIdentifier を実装していても、下流のメールライブラリが勝手に正規化する場合は脆弱の可能性があるため、受信者アドレスのバリデーション箇所を正規化後に移行すること。