CWE
285 863
Advisory Published
Advisory Published
Updated

CVE-2023-48309: next-auth vulnerable to possible user mocking that bypasses basic authentication

First published: Mon Nov 20 2023(Updated: )

### Impact `next-auth` applications prior to version **4.24.5** that rely on the default [Middleware authorization](https://next-auth.js.org/configuration/nextjs#middleware) are affected. A bad actor could create an empty/mock user, by getting hold of a NextAuth.js-issued JWT from an interrupted OAuth sign-in flow (state, PKCE or nonce). Manually overriding the `next-auth.session-token` cookie value with this non-related JWT would let the user simulate a logged in user, albeit having no user information associated with it. (The only property on this user is an opaque randomly generated string). This vulnerability does **not** give access to other users' data, neither to resources that require proper authorization via scopes or other means. The created mock user has no information associated with it (ie. no name, email, access_token, etc.) This vulnerability can be exploited by bad actors to peek at logged in user states (e.g. dashboard layout). _Note: Regardless of the vulnerability, the existence of a NextAuth.js session state can provide simple authentication, but not authorization in your applications. For role-based access control, you can check out [our guide](https://authjs.dev/guides/basics/role-based-access-control)._ ### Patches We patched the vulnerability in `next-auth` `v4.24.5`. To upgrade, run one of the following: ``` npm i next-auth@latest ``` ``` yarn add next-auth@latest ``` ``` pnpm add next-auth@latest ``` ### Workarounds Upgrading to `latest` is the recommended way to fix this issue. However, using [a custom authorization callback for Middleware](https://next-auth.js.org/configuration/nextjs#advanced-usage), developers can manually do a basic authentication: ```ts // middleware.ts import { withAuth } from "next-auth/middleware" export default withAuth(/*your middleware function*/, { // checking the existence of any property - besides `value` which might be a random string - on the `token` object is sufficient to prevent this vulnerability callbacks: { authorized: ({ token }) => !!token?.email } }) ``` ### References - [NextAuth.js Middleware](https://next-auth.js.org/configuration/nextjs#middleware) - [Role-based access contorl (RBAC) guide](https://authjs.dev/guides/basics/role-based-access-control)

Credit: security-advisories@github.com security-advisories@github.com

Affected SoftwareAffected VersionHow to fix
npm/next-auth<4.24.5
4.24.5
Nextauth.js Next-auth<4.24.5

Never miss a vulnerability like this again

Sign up to SecAlerts for real-time vulnerability data matched to your software, aggregated from hundreds of sources.

Frequently Asked Questions

  • What is the vulnerability ID?

    The vulnerability ID is CVE-2023-48309.

  • Which applications are affected by this vulnerability?

    next-auth applications prior to version 4.24.5 are affected.

  • What is the impact of this vulnerability?

    A bad actor could create an empty/mock user by getting hold of a NextAuth.js-issued JWT from an interrupted OAuth flow.

  • What is the severity of this vulnerability?

    The severity of this vulnerability is medium, with a severity value of 5.3.

  • How can I fix this vulnerability?

    You need to update your next-auth package to version 4.24.5 or higher to fix this vulnerability.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2024 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203