GHSA-xmf8-cvqr-rfgj

Suggest an improvement
Source
https://github.com/advisories/GHSA-xmf8-cvqr-rfgj
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/07/GHSA-xmf8-cvqr-rfgj/GHSA-xmf8-cvqr-rfgj.json
JSON Data
https://api.test.osv.dev/v1/vulns/GHSA-xmf8-cvqr-rfgj
Aliases
Downstream
CGA (14)
MINI (1)
Published
2026-07-23T14:42:55Z
Modified
2026-08-13T21:00:12Z
Severity
  • 7.5 (High) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H CVSS Calculator
Summary
Auth.js: getToken() throws an uncaught exception on malformed Bearer authorization headers
Details

Summary

The exported getToken() helper (next-auth/jwt and @auth/core/jwt) 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 the decode step to throw rather than being treated as an invalid token. Because getToken() is commonly called in API routes, middleware, and other request handlers, a single unauthenticated request can trigger an unhandled exception in code paths that authenticate requests.

Am I affected?

You are affected if all of the following hold:

  • You use next-auth <= 5.0.0-beta.25 (or @auth/core exposing the same getToken() implementation).
  • Your application calls getToken() directly — for example in a Route Handler, middleware, or server-side request handler.
  • You do not wrap that getToken() call in your own try/catch.

You are not affected if you only use the framework's auth() helper and never call getToken() yourself, or if every getToken() call site already has its own exception handling.

Impact

  • Denial of service: an unauthenticated request carrying a malformed Bearer authorization header can raise an unhandled exception in any handler that calls getToken().
  • The impact is per-request and limited to availability; it does not expose tokens, sessions, or other data, and does not bypass authentication.

CWE-20: Improper Input Validation.

Patched version

The fix makes getToken() treat a malformed Bearer value as an invalid token and return null, matching how other undecodable tokens are already handled. Upgrade to the first release containing this fix (to be published; this advisory will be updated with the exact patched version before publication) and no code changes are required.

Workarounds

If you cannot upgrade immediately, either:

  • Config/code-level: wrap your getToken() calls so a thrown error is treated as "no token", e.g.

    let token = null
    try {
      token = await getToken({ req, secret })
    } catch {
      token = null
    }
    
  • Or strip/normalize the incoming Authorization header at the edge (proxy, middleware) before it reaches getToken(), rejecting values whose Bearer portion is not valid percent-encoding.

Credit

Reported by @deprrous. Thank you for the responsible disclosure.

Database specific
{
    "cwe_ids":  [
        "CWE-20"
    ],
    "github_reviewed":  true,
    "github_reviewed_at":  "2026-07-23T14:42:55Z",
    "nvd_published_at":  "2026-08-12T21:17:40Z",
    "severity":  "HIGH"
}
References

Affected packages

npm / @auth/core

Package

Name
@auth/core
View open source insights on deps.dev
Purl
pkg:npm/%40auth/core

Affected ranges

Type
SEMVER
Events
Introduced
0.1.0
Fixed
0.41.3

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/07/GHSA-xmf8-cvqr-rfgj/GHSA-xmf8-cvqr-rfgj.json"

npm / next-auth

Package

Affected ranges

Type
SEMVER
Events
Introduced
5.0.0-beta.0
Fixed
5.0.0-beta.32

Database specific

last_known_affected_version_range
"<= 5.0.0-beta.31"
source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/07/GHSA-xmf8-cvqr-rfgj/GHSA-xmf8-cvqr-rfgj.json"

npm / next-auth

Package

Affected ranges

Type
SEMVER
Events
Introduced
4.0.6
Fixed
4.24.15

Database specific

last_known_affected_version_range
"<= 4.24.14"
source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/07/GHSA-xmf8-cvqr-rfgj/GHSA-xmf8-cvqr-rfgj.json"