CVE-2026-34076: Clerk SSRF Vulnerability

HIGH
Advisory Identifier: GHSA-gjxx-92w9-8v8f
CVSS 7.4
CWE-918
Published
Advisory Summary

CVE-2026-34076 is a HIGH (CVSS 7.4) ssrf vulnerability (CWE-918: Server-Side Request Forgery (SSRF)) affecting Clerk libraries in the npm ecosystem. The issue involves ssrf in the opt-in clerkfrontendapiproxy feature may leak secret keys to unintended host. Remediation is available by upgrading affected packages to version 3.2.3, 2.0.7, 0.1.5, 3.1.5.

CVE-2026-34076 at a Glance

CVE Identifier CVE-2026-34076
GHSA Identifier GHSA-gjxx-92w9-8v8f
Severity HIGH
CVSS v3.1 Base Score 7.4
CWE Classification CWE-918: Server-Side Request Forgery (SSRF)
Affected Product Clerk
Package Ecosystem npm
Published Date
Last Updated

Security Impact

CVSS: 7.4

The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N).

Attack Vector Network (AV:N)
Attack Complexity High (AC:H)
Privileges Required None (PR:N)
User Interaction None (UI:N)
Scope Unchanged (S:U)
Confidentiality High (C:H)
Integrity High (I:H)
Availability None (A:N)

How to Fix CVE-2026-34076

To remediate this vulnerability, upgrade all affected Clerk dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

@clerk/backend fixed: 3.2.3
npm install @clerk/backend@3.2.3
@clerk/express fixed: 2.0.7
npm install @clerk/express@2.0.7
@clerk/hono fixed: 0.1.5
npm install @clerk/hono@0.1.5
@clerk/fastify fixed: 3.1.5
npm install @clerk/fastify@3.1.5
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

npm ls @clerk/backend

How to Check if You Are Affected

To determine whether your Node.js application is affected by CVE-2026-34076, inspect your project dependencies using npm:

npm ls @clerk/backend

Analyze the terminal output to locate any version of Clerk in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 3.2.3), your application is affected.

Note: The npm ls @clerk/backend command inspects dependencies declared in your package.json and lockfile; it does not perform automated runtime dynamic scanning.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-918: Server-Side Request Forgery (SSRF), where the web server receives a url or similar request from an upstream component and retrieves the contents of this url, but it does not sufficiently ensure that the request is being sent to the expected destination. In Clerk, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

## Summary The `clerkFrontendApiProxy` function in `@clerk/backend` is vulnerable to Server-Side Request Forgery (SSRF). An unauthenticated attacker can craft a request path that causes the proxy to send the application's `Clerk-Secret-Key` to an attacker-controlled server. ## Affected packages Only applications that have opted into the `frontendApiProxy` feature are affected. This feature is not enabled by default. **Users of `@clerk/nextjs` are not affected** due to how the framework handles repeated `/` in request paths. | Package | Affected versions | Fixed version | |---|---|---| | `@clerk/backend` | `>= 3.0.0, <= 3.2.2` | `3.2.3` | | `@clerk/express` | `>= 2.0.0, <= 2.0.6` | `2.0.7` | | `@clerk/hono` | `>= 0.1.0, <= 0.1.4` | `0.1.5` | | `@clerk/fastify` | `>= 3.1.0, <= 3.1.4` | `3.1.5` | Search your codebase for the `frontendApiProxy` option. If none of the patterns below appear in your code, you are not affected. **@clerk/express** ```ts app.use(clerkMiddleware({ frontendApiProxy: { enabled: true } })); ``` **@clerk/hono** ```ts app.use('*', clerkMiddleware({ frontendApiProxy: { enabled: true } })); ``` **@clerk/fastify** ```ts fastify.register(clerkPlugin, { frontendApiProxy: { enabled: true } }); ``` **@clerk/backend** ```ts import { clerkFrontendApiProxy } from '@clerk/backend/proxy'; ``` A quick way to check across your entire project: ```sh grep -r "frontendApiProxy\|clerkFrontendApiProxy" . ``` If there are no matches, you are not using this feature. ## Recommended actions Clerk's internal logs show no evidence of users utilizing the built-in proxy with the impacted versions. Despite that, if you are on an impacted version and use the built-in proxy we recommend upgrading and rotating your Clerk Secret Key immediately. 1. **Upgrade** to the patched version of `@clerk/backend` (and `@clerk/express`, `@clerk/hono`, etc.) 2. **Rotate your Clerk Secret Key** after upgrading - if an attacker exploited this vulnerability, they may have captured your key. Rotate it in the [Clerk Dashboard](https://dashboard.clerk.com) under **API Keys**. You should deploy your application with the updated key before revoking the existing key. 3. **Audit access logs** for requests to your proxy endpoint (`/__clerk/` by default) containing double slashes in the path. ## Credit Discovered during an internal code audit.

CVE-2026-34076 Affected Clerk Versions

4 component(s)
Fixed Versions:
3.2.32.0.70.1.53.1.5
Product / Package Ecosystem Affected Versions Fixed Version
@clerk/backend
npm
≥ 3.0.0
< 3.2.3
3.2.3
@clerk/express
npm
≥ 2.0.0
< 2.0.7
2.0.7
@clerk/hono
npm
≥ 0.1.0
< 0.1.5
0.1.5
@clerk/fastify
npm
≥ 3.1.0
< 3.1.5
3.1.5

References

Frequently Asked Questions

What is CVE-2026-34076?
CVE-2026-34076 is a security vulnerability in Clerk involving SSRF in the opt-in clerkFrontendApiProxy feature may leak secret keys to unintended host under CWE-918: Server-Side Request Forgery (SSRF).
Which Clerk versions are affected?
Affected versions include releases prior to 3.2.3, 2.0.7, 0.1.5, 3.1.5 across affected packages: @clerk/backend, @clerk/express, @clerk/hono, @clerk/fastify.
What version fixes CVE-2026-34076?
Upgrading to 3.2.3, 2.0.7, 0.1.5, 3.1.5 (or the latest patched release for your respective branch) resolves the vulnerability.
Is @clerk/backend affected?
Yes, @clerk/backend is affected in releases prior to 3.2.3. Upgrade your dependency to 3.2.3 or later.
Is @clerk/express affected?
Yes, @clerk/express is affected in releases prior to 2.0.7. Upgrade your dependency to 2.0.7 or later.
What is the CVSS score of CVE-2026-34076?
CVE-2026-34076 has a CVSS v3.1 base score of 7.4 (HIGH) with vector string CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N.
What CWE is associated with CVE-2026-34076?
CVE-2026-34076 is classified under CWE-918: Server-Side Request Forgery (SSRF) (The web server receives a URL or similar request from an upstream component and retrieves the contents of this URL, but it does not sufficiently ensure that the request is being sent to the expected destination.).
How can I check npm dependencies for CVE-2026-34076?
Run the dependency tree command: 'npm ls @clerk/backend'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-gjxx-92w9-8v8f",
  "modified" : "2026-04-06T16:44:03Z",
  "published" : "2026-03-27T19:58:19Z",
  "aliases" : [ "CVE-2026-34076" ],
  "summary" : "Clerk: SSRF in the opt-in clerkFrontendApiProxy feature may leak secret keys to unintended host",
  "details" : "## Summary\n\nThe `clerkFrontendApiProxy` function in `@clerk/backend` is vulnerable to Server-Side Request Forgery (SSRF). An unauthenticated attacker can craft a request path that causes the proxy to send the application's `Clerk-Secret-Key` to an attacker-controlled server.\n\n## Affected packages\n\nOnly applications that have opted into the `frontendApiProxy` feature are affected. This feature is not enabled by default. **Users of `@clerk/nextjs` are not affected** due to how the framework handles repeated `/` in request paths.\n\n| Package | Affected versions | Fixed version |\n|---|---|---|\n| `@clerk/backend` | `>= 3.0.0, <= 3.2.2` | `3.2.3` |\n| `@clerk/express` | `>= 2.0.0, <= 2.0.6` | `2.0.7` |\n| `@clerk/hono` | `>= 0.1.0, <= 0.1.4` | `0.1.5` |\n| `@clerk/fastify` | `>= 3.1.0, <= 3.1.4` | `3.1.5` |\n\nSearch your codebase for the `frontendApiProxy` option. If none of the patterns below appear in your code, you are not affected.\n\n**@clerk/express**\n```ts\napp.use(clerkMiddleware({ frontendApiProxy: { enabled: true } }));\n```\n\n**@clerk/hono**\n```ts\napp.use('*', clerkMiddleware({ frontendApiProxy: { enabled: true } }));\n```\n\n**@clerk/fastify**\n```ts\nfastify.register(clerkPlugin, { frontendApiProxy: { enabled: true } });\n```\n\n**@clerk/backend**\n```ts\nimport { clerkFrontendApiProxy } from '@clerk/backend/proxy';\n```\n\nA quick way to check across your entire project:\n\n```sh\ngrep -r \"frontendApiProxy\\|clerkFrontendApiProxy\" .\n```\n\nIf there are no matches, you are not using this feature.\n\n\n## Recommended actions\n\nClerk's internal logs show no evidence of users utilizing the built-in proxy with the impacted versions. Despite that, if you are on an impacted version and use the built-in proxy we recommend upgrading and rotating your Clerk Secret Key immediately.\n\n1. **Upgrade** to the patched version of `@clerk/backend` (and `@clerk/express`, `@clerk/hono`, etc.)\n2. **Rotate your Clerk Secret Key** after upgrading - if an attacker exploited this vulnerability, they may have captured your key. Rotate it in the [Clerk Dashboard](https://dashboard.clerk.com) under **API Keys**.  You should deploy your application with the updated key before revoking the existing key.\n3. **Audit access logs** for requests to your proxy endpoint (`/__clerk/` by default) containing double slashes in the path.\n\n\n\n## Credit\n\nDiscovered during an internal code audit.",
  "severity" : [ {
    "type" : "CVSS_V3",
    "score" : "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@clerk/backend"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "3.0.0"
      }, {
        "fixed" : "3.2.3"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 3.2.2"
    }
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@clerk/express"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "2.0.0"
      }, {
        "fixed" : "2.0.7"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 2.0.6"
    }
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@clerk/hono"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0.1.0"
      }, {
        "fixed" : "0.1.5"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 0.1.4"
    }
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@clerk/fastify"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "3.1.0"
      }, {
        "fixed" : "3.1.5"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 3.1.4"
    }
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/clerk/javascript/security/advisories/GHSA-gjxx-92w9-8v8f"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-34076"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/clerk/javascript"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-918" ],
    "severity" : "HIGH",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-03-27T19:58:19Z",
    "nvd_published_at" : "2026-04-01T18:16:29Z"
  }
}