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
npm install next-auth@3.29.2- Affected
- >=4.0.0 <4.3.2
- Fixed in
- 4.3.2
npm install next-auth@4.3.2Details
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
- Linkgithub.com/nextauthjs/next-auth/security/advisories/GHSA-f9wg-5f46-cjmw
- Advisorynvd.nist.gov/vuln/detail/CVE-2022-24858
- Linkgithub.com/nextauthjs/next-auth/commit/6e15bdcb2d93c1ad5ee3889f702607637e79db50
- Packagegithub.com/nextauthjs/next-auth
- Linkgithub.com/nextauthjs/next-auth/releases/tag/next-auth%40v4.3.2
- Linknext-auth.js.org/configuration/callbacks#redirect-callback
- Linknext-auth.js.org/getting-started/upgrade-v4
Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.