NextAuth.js CVE-2026-73420
CRITICALSeverity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Remote unauthenticated with no user interaction (AV:N/PR:N/UI:N), but AC:H because success depends on a downstream mailer applying Unicode normalization; account takeover gives C:H/I:H, no availability impact.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
3Blast Radius
ecosystem impact- 1 npm packages depend on @auth/core (1 direct, 0 indirect)
- 7 npm packages depend on next-auth (6 direct, 1 indirect)
Ecosystem-wide dependent count for version 0.1.0 and other introduced versions.
DescriptionCVE.org
NextAuth.js provides authentication for Next.js. Prior to @auth/core 0.41.3 and next-auth 4.24.15 and 5.0.0-beta.32, the defaultNormalizer used by the email and magic-link sign-in flow validates an address before applying Unicode normalization. An address can contain a Unicode character such as U+FF20 FULLWIDTH COMMERCIAL AT that is not ASCII at-sign but canonicalizes to an ASCII at-sign under NFKC or NFKD normalization. The address passes the normalizer's single-at-sign check, but a downstream sendVerificationRequest mail library or delivery service that normalizes the address can then see two at-sign separators and deliver the passwordless sign-in link to an attacker-controlled recipient. Applications are affected when the email provider uses the built-in normalizer rather than a custom normalizeIdentifier and the downstream sender applies Unicode normalization. An attacker who knows a victim's email address can request the misrouted magic link and sign in as the victim without victim interaction. This issue is fixed in @auth/core 0.41.3 and next-auth 4.24.15 and 5.0.0-beta.32.
AnalysisAI
Account takeover in NextAuth.js / Auth.js email (magic-link) sign-in lets a remote unauthenticated attacker who knows a victim's address hijack the passwordless login. The built-in defaultNormalizer checks for a single ASCII '@' before applying Unicode NFKC normalization, so a homoglyph such as U+FF20 (FULLWIDTH COMMERCIAL AT) passes validation but canonicalizes to a second '@' in a downstream SMTPUTF8/internationalized mailer, misrouting the sign-in link to an attacker mailbox. No public exploit is identified at time of analysis, but a regression test and full commit-level detail are public, and vendor-released patches exist (@auth/core 0.41.3, next-auth 4.24.15 and 5.0.0-beta.32).
Technical ContextAI
The affected component is the JavaScript authentication library NextAuth.js (npm next-auth) and its underlying @auth/core package, used to add auth to Next.js applications. The defect is in the email/magic-link provider's defaultNormalizer within the sign-in route (packages/next-auth/src/core/routes/signin.ts). The root cause is CWE-180 (Incorrect Behavior Order: Validate Before Canonicalize): the code called identifier.trim() and enforced a single-'@' rule before any Unicode normalization, then normalization happened later in a different layer. Unicode NFKC/NFKD compatibility mapping folds visually or semantically equivalent code points onto ASCII - U+FF20 FULLWIDTH COMMERCIAL AT maps to U+0040 '@'. Mail libraries and SMTPUTF8-capable delivery services routinely normalize recipient addresses, so a string like 'attacker@evil.com@victim.company.com' presents one '@' to the validator but two to the mailer, which parses it into multiple recipients. The fix inserts identifier.normalize("NFKC") before validation so the smuggled separator is collapsed and rejected up front.
Affected ProductsAI
The vulnerability affects the NextAuth.js / Auth.js ecosystem: npm package @auth/core versions >= 0.1.0 and < 0.41.3 (fixed in 0.41.3), npm package next-auth versions >= 4.10.3 and < 4.24.15 (fixed in 4.24.15), and the v5 line next-auth >= 5.0.0-beta.1 through <= 5.0.0-beta.31 (fixed in 5.0.0-beta.32). Only deployments that enable the email/magic-link (passwordless) provider, rely on the built-in default identifier normalizer instead of a custom normalizeIdentifier, and use a sendVerificationRequest mailer/service that applies Unicode normalization are actually exploitable. No CPE strings were provided in the input. The authoritative vendor advisory is GHSA-7rqj-j65f-68wh (https://github.com/nextauthjs/next-auth/security/advisories/GHSA-7rqj-j65f-68wh).
RemediationAI
Vendor-released patch: upgrade @auth/core to 0.41.3, next-auth (v4) to 4.24.15, or next-auth (v5) to 5.0.0-beta.32, per release notes at https://github.com/nextauthjs/next-auth/releases/tag/@auth/core@0.41.3, .../next-auth@4.24.15 and .../next-auth@5.0.0-beta.32; the fix (commits 19d2feb24359fa8c79418907fc68d9ec8152ca94 and a63eee12a1a20cb35209e44195b097868517b9a0) normalizes before validation and needs no application code changes. If you cannot upgrade immediately, supply a custom normalizeIdentifier on the email provider that calls identifier.normalize("NFKC") (then lower-cases and trims) before validating and rejects any address not containing exactly one '@' after normalization - this fully closes the homoglyph path with no functional downside for legitimate users. Alternatively, reject any address whose local part or domain contains non-ASCII characters, which is simple and robust but breaks internationalized (IDN/SMTPUTF8) email addresses, so only use it if your user base does not need them. Full details in GHSA-7rqj-j65f-68wh.
Same technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
GHSA-7rqj-j65f-68wh