Skip to main content

NextAuth.js EUVDEUVD-2026-57552

| CVE-2026-73418 HIGH
Improper Input Validation (CWE-20)
2026-08-12 GitHub_M GHSA-xmf8-cvqr-rfgj
7.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Send HTTP request with malformed Bearer header (e.g., 'Bearer %ZZ')
  2. Delivery
    getToken() reads Authorization header and attempts decodeURIComponent()
  3. Exploit
    URIError thrown by JavaScript runtime
  4. Execution
    Exception propagates uncaught through request handler
  5. Impact
    Per-request denial of service returned to client

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
Exploitation Conditions

The application must call getToken() directly from next-auth/jwt or @auth/core/jwt in an API route, middleware, or server-side request handler - applications that exclusively use the framework's auth() helper and never call getToken() themselves are NOT affected. The attacker must supply a malformed percent-encoded Bearer token in the Authorization header (e.g., 'Authorization: Bearer %ZZ'); a well-formed or absent Bearer token does not trigger the flaw. No session cookie may be present in the request; if getToken() finds a valid session cookie, the Bearer header path is bypassed entirely. The call site must not be wrapped in a try/catch block - any existing exception handling at the application level prevents the DoS from propagating. Limiting factors: requires direct API usage of getToken() (not the auth() abstraction), requires the absence of developer-applied exception handling at that call site, and requires the absence of upstream header validation or normalization. Impact is strictly per-request availability - no authentication bypass, session exposure, or persistent state corruption occurs.

Impact

The CVSS 7.5 High rating (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) accurately captures the unauthenticated, low-complexity, network-accessible nature of the attack with pure availability impact and no confidentiality or integrity risk. No EPSS score was provided in the input data, so probabilistic exploitation likelihood cannot be quantified from that signal. This CVE is not listed in the CISA KEV catalog and no public exploit code has been identified at time of analysis, meaning active widespread exploitation is not confirmed. Despite these reassuring signals, the attack is operationally trivial - any HTTP client can send a malformed Bearer header - and NextAuth.js has a broad deployment footprint across the Next.js ecosystem, meaning the realistic exposure surface is large wherever getToken() is called without exception handling. The primary limiting factor is architectural: applications that rely solely on the auth() helper rather than calling getToken() directly are not affected, which meaningfully narrows the true exposure population. No conflicting signals exist between the CVSS vector and the description; the network attack vector is consistent with the HTTP-based trigger mechanism. The per-request rather than persistent nature of the DoS constrains blast radius to individual request availability rather than service-wide outage, though under sustained traffic a vulnerable endpoint would remain continuously unavailable.

Exploit ScenarioDerived

An unauthenticated attacker sends a single HTTP GET or POST request to any endpoint that calls getToken() directly, setting the Authorization header to 'Bearer %ZZ' or any other syntactically invalid percent-encoded value. The decodeURIComponent() call inside getToken() immediately throws a URIError, which propagates as an unhandled exception through the request handler, returning an error response to the attacker and denying service for that request. No exploit code is publicly available, but the attack requires no special tooling - a standard curl command with a crafted header is sufficient to trigger it.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 12, 2026

Denial of service in NextAuth.js's getToken() helper allows unauthenticated remote attackers to crash any API route, middleware, or server-side handler that calls getToken() directly by sending a single HTTP request with a malformed Authorization: Bearer header containing invalid percent-encoding. The vulnerability affects next-auth 4.0.6-4.24.14, next-auth 5.0.0-beta.0-5.0.0-beta.31, and @auth/core 0.1.0-0.41.2, and is fixed in next-auth 4.24.15, next-auth 5.0.0-beta.32, and @auth/core 0.41.3. No public exploit code has been identified at time of analysis, but the trigger condition is trivially constructible from the public advisory description alone.

RemediationAI

Upgrade to next-auth 4.24.15 (https://github.com/nextauthjs/next-auth/releases/tag/next-auth%404.24.15), next-auth 5.0.0-beta.32 (https://github.com/nextauthjs/next-auth/releases/tag/next-auth%405.0.0-beta.32), or @auth/core 0.41.3 (https://github.com/nextauthjs/next-auth/releases/tag/%40auth%2Fcore%400.41.3) as appropriate for your installed package; no application code changes are required alongside the package upgrade. If immediate upgrade is not possible, wrap every getToken() call site in a try/catch that assigns null on error, treating a thrown exception as an absent token - this requires auditing all call sites because any missed location remains vulnerable. Alternatively, normalize or reject incoming Authorization headers at the edge (reverse proxy, CDN, or upstream middleware) before they reach getToken(), stripping any Bearer value that contains invalid percent-encoding sequences; this has the trade-off of potentially rejecting edge-case legitimate tokens if the normalization logic is overly broad. Full advisory and patch references: https://github.com/nextauthjs/next-auth/security/advisories/GHSA-xmf8-cvqr-rfgj.

Affected VersionsENISA

next-auth 5.0.0-beta.0, ≤ 5.0.0-beta.31
core 0.1.0, < 0.41.3
next-auth 4.0.6, ≤ 4.24.14

Affected Packages

npm @auth/core fix: 0.41.3
npm next-auth fix: 4.24.15, 5.0.0-beta.32
euvd core_0_1_0 fix: 0.41.3
euvd next_auth_5_0_0_beta_0 no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 4 packages in npm, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

NextAuth.js is a popular authentication library for Next.js applications, exposing a getToken() helper in next-auth/jwt and @auth/core/jwt for extracting and validating JWT session tokens from incoming requests. When no session cookie is present, getToken() falls back to reading the Authorization: Bearer header, URL-decoding the bearer value via JavaScript's native decodeURIComponent() before validating it. JavaScript's decodeURIComponent() throws a URIError on malformed percent-encoding sequences such as '%', '%A', or '%ZZ' - sequences that are syntactically invalid under RFC 3986. Because getToken() does not wrap this decode step in a try/catch, the URIError propagates as an unhandled exception through whatever route or middleware called getToken(). The root cause is CWE-20 (Improper Input Validation): attacker-controlled input is passed to a throwing function without prior validation or exception containment. Affected CPE strings are cpe:2.3:a:nextauthjs:next-auth:*:*:*:*:*:*:*:* and cpe:2.3:a:@auth:core:*:*:*:*:*:*:*:*. The fix, confirmed in the merged PR diff, wraps the decodeURIComponent() call in a try/catch that returns null for malformed tokens, matching how other invalid tokens are already handled.

Know when Auth gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Unauthenticated network-accessible trigger via HTTP header requires no privileges or user interaction; impact is availability only with no confidentiality or integrity effect.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

2
Patch available
Aug 12, 2026 - 21:17 EUVD
CVE Published
Aug 12, 2026 - 20:21 cve.org
HIGH 7.5

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 exported getToken() helper in the next-auth/jwt and @auth/core/jwt modules can throw an uncaught exception when it reads a malformed Authorization: Bearer header. When no session cookie is present, getToken() URL-decodes the bearer value before validating it, and malformed percent encoding causes decodeURIComponent() to throw instead of treating the token as invalid. Because getToken() is commonly called in API routes, middleware, and server-side request handlers, a single unauthenticated request can trigger an unhandled exception in code paths that authenticate requests, causing a per-request denial of service without exposing tokens, sessions, or other data and without bypassing authentication. This issue is fixed in @auth/core 0.41.3 and next-auth 4.24.15 and 5.0.0-beta.32.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 1 npm packages depend on @auth/core (1 direct, 0 indirect)

Ecosystem-wide dependent count for version 0.1.0.

Executive ViewAI

Why It Matters

NextAuth.js versions 4.0.6 through 4.24.14, 5.0.0-beta.0 through 5.0.0-beta.31, and @auth/core 0.1.0 through 0.41.2 contain a remote denial-of-service vulnerability allowing unauthenticated attackers to crash any API route using the getToken() helper with a single malformed request. Organizations using NextAuth.js face immediate service availability risk without patching.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.5%
Top 62% exploitable
Prevalence
High
dominant authentication library across the Next.js ecosystem
Threat Intel
1
1 sources
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy