Moderate severityNVD Advisory· Published Apr 19, 2022· Updated Apr 23, 2025
Default redirect callback vulnerable to open redirects
CVE-2022-24858
Description
next-auth v3 users before version 3.29.2 are impacted. next-auth version 4 users before version 4.3.2 are also impacted. Upgrading to 3.29.2 or 4.3.2 will patch this vulnerability. If you are not able to upgrade for any reason, you can add a configuration to your callbacks option. If you already have a redirect callback, make sure that you match the incoming url origin against the baseUrl.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
next-authnpm | < 3.29.2 | 3.29.2 |
next-authnpm | >= 4.0.0, < 4.3.2 | 4.3.2 |
Affected products
1- Range: < 3.29.2, < 4.3.2
Patches
16e15bdcb2d93fix: update default `callbacks.redirect`
2 files changed · +6 −5
docs/docs/configuration/callbacks.md+4 −3 modified@@ -88,9 +88,10 @@ The default redirect callback looks like this: ... callbacks: { async redirect({ url, baseUrl }) { - if (url.startsWith(baseUrl)) return url // Allows relative callback URLs - else if (url.startsWith("/")) return new URL(url, baseUrl).toString() + if (url.startsWith("/")) return new URL(url, baseUrl).toString() + // Allows callback URLs on the same origin + else if (new URL(url).origin === baseUrl) return url return baseUrl } } @@ -104,7 +105,7 @@ The redirect callback may be invoked more than once in the same flow. ## JWT callback This callback is called whenever a JSON Web Token is created (i.e. at sign -in) or updated (i.e whenever a session is accessed in the client). The returned value will be [encrypted](/configuration/options#jwt), and it is stored in a cookie. +in) or updated (i.e whenever a session is accessed in the client). The returned value will be [signed and optionally encrypted](/configuration/options#jwt), and it is stored in a cookie. Requests to `/api/auth/signin`, `/api/auth/session` and calls to `getSession()`, `useSession()` will invoke this function, but only if you are using a [JWT session](/configuration/options#session). This method is not invoked when you persist sessions in a database.
packages/next-auth/src/core/lib/default-callbacks.ts+2 −2 modified@@ -5,8 +5,8 @@ export const defaultCallbacks: CallbacksOptions = { return true }, redirect({ url, baseUrl }) { - if (url.startsWith(baseUrl)) return url - else if (url.startsWith("/")) return new URL(url, baseUrl).toString() + if (url.startsWith("/")) return new URL(url, baseUrl).toString() + else if (new URL(url).origin === baseUrl) return url return baseUrl }, session({ session }) {
Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
7- github.com/advisories/GHSA-f9wg-5f46-cjmwghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2022-24858ghsaADVISORY
- github.com/nextauthjs/next-auth/commit/6e15bdcb2d93c1ad5ee3889f702607637e79db50ghsaWEB
- github.com/nextauthjs/next-auth/releases/tag/next-auth%40v4.3.2ghsaWEB
- github.com/nextauthjs/next-auth/security/advisories/GHSA-f9wg-5f46-cjmwghsax_refsource_CONFIRMWEB
- next-auth.js.org/configuration/callbacksghsax_refsource_MISCWEB
- next-auth.js.org/getting-started/upgrade-v4ghsax_refsource_MISCWEB
News mentions
0No linked articles in our index yet.