MediumGHSA-f9wg-5f46-cjmwCVE-2022-24858

NextAuth.js default redirect callback vulnerable to open redirects

Published 22 Apr 2022 · Updated 8 Nov 2023

Affected packages

Affected
<3.29.2
Fixed in
3.29.2
Update to the fixed version for your release line, for example:npm install next-auth@3.29.2
Affected
>=4.0.0 <4.3.2
Fixed in
4.3.2
Update to the fixed version for your release line, for example:npm install next-auth@4.3.2

Details

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

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

Is GHSA-f9wg-5f46-cjmw in any of your client repos?

Checking one package by hand is fine. Checking it across forty client projects is not. NPMscan reads the lockfiles in every GitHub repo you pick, finds each project with an affected next-auth, and gives you the command that fixes it.

References

Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.