VYPR
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.

PackageAffected versionsPatched versions
next-authnpm
< 3.29.23.29.2
next-authnpm
>= 4.0.0, < 4.3.24.3.2

Affected products

1

Patches

1
6e15bdcb2d93

fix: update default `callbacks.redirect`

https://github.com/nextauthjs/next-authBalázs OrbánApr 12, 2022via ghsa
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

News mentions

0

No linked articles in our index yet.