Skip to content

Default redirect callback vulnerable to open redirects

High
balazsorban44 published GHSA-f9wg-5f46-cjmw Apr 19, 2022

Package

npm next-auth (npm)

Affected versions

<3.29.2, <4.3.2

Patched versions

3.29.2, 4.3.2

Description

Impact

next-auth v3 users before version 3.29.2 are impacted. (We recommend upgrading to v4 in most cases. See our migration guide)

next-auth v4 users before version 4.3.2 are impacted.

Patches

Upgrading to 3.29.2 or 4.3.2 will patch this vulnerability.

You can do:

npm i next-auth@latest

or

yarn add next-auth@latest

or

pnpm add next-auth@latest

(This will update to the latest v4 version, but you can change latest to 3 if you want to stay on v3.)

Workarounds

If you are not able to upgrade for any reason, you can add the following configuration to your callbacks option:

// async redirect(url, baseUrl) { // v3
async redirect({ url, baseUrl }) { // v4
    // Allows relative callback URLs
    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
}

If you already have a redirect callback, make sure that you match the incoming url origin against the baseUrl.

References

Read more about the callbacks.redirect option in the documentation: https://next-auth.js.org/configuration/callbacks#redirect-callback

For more information

If you have any concerns, we request responsible disclosure, outlined here: https://next-auth.js.org/security#reporting-a-vulnerability

Timeline

The issue was reported 2022 April 6th, and a response was sent out to the reporter in less than 30 minutes, and a patch was produced within a few days.

Severity

High

CVE ID

CVE-2022-24858

Weaknesses

Credits