# CVE-2026-40303: zrok — Fixed in 2.0.1

🐹

🐹 Go

Not in CISA KEV

HIGH severity

# CVE-2026-40303 — zrok

HIGH 

CVE-2026-40303 is a high-severity (CVSS 7.5) Uncontrolled Resource Consumption vulnerability in github.com/openziti/zrok. A fix is available for github.com/openziti/zrok — see the affected versions and patch details below.

zrok allows unauthenticated DoS via unbounded memory allocation in striped session cookie parsing

Also known as[GHSA-cpf9-ph2j-ccr9](/vulnerability/GHSA-cpf9-ph2j-ccr9)GO-2026-5329

Published

Apr 17, 2026

Updated

Oct 28, 2026

Affected

2 pkgs

Patched

1 / 2

Exploits

None indexed

Exploitation data as of Nov 10, 2026 · OSV.dev, NVD, FIRST.org (EPSS)

## Exploitation Status

### No confirmed exploitation observed yet

-   CISA assesses this as automatable — exploitation doesn’t require manual, per-target effort, which raises the odds of mass scanning and opportunistic attacks.
-   CISA’s own triage has not observed active exploitation or public proof-of-concept code for this CVE as of its last assessment.

Exploitation and automatability from CISA’s SSVC triage for CVE-2026-40303.

## EPSS Exploitation Probability

[via FIRST.org ↗](https://www.first.org/epss/)

0.5%probability of exploitation in next 30 days

Lower Risk0.00%

Lower risk than most CVEs40th percentile — riskier than 40% of all scored CVEsHighest risk

0.00%0.36%0.73%1.09%0.0%0.5%May 26Sep 26Nov 26

Probability of exploitation in the next 30 days, from [FIRST.org EPSS](https://www.first.org/epss/).

## How urgent is this, really

## Where this sits among everything scored

## Real-World Exposure

2 pkgs affected

🐹`github.com/openziti/zrok`🐹`github.com/openziti/zrok/v2`

Real-time download stats are indexed for npm and PyPI packages. This vulnerability affects Go packages — download data is not available via public APIs for these ecosystems.

## Description

**Summary** endpoints.GetSessionCookie parses an attacker-supplied cookie chunk count and calls make(\[\]string, count) with no upper bound before any token validation occurs. The function is reached on every request to an OAuth-protected proxy share, allowing an unauthenticated remote attacker to trigger gigabyte-scale heap allocations per request, leading to process-level OOM termination or repeated goroutine panics. Both publicProxy and dynamicProxy are affected.

-   Attack Vector: Network — exploitable via a single HTTP request with a crafted Cookie header.
-   Attack Complexity: Low — no preconditions or chaining required; the attacker only needs to know the cookie name (publicly derivable from any OAuth redirect).
-   Privileges Required: None — reached before JWT validation or any authentication check.
-   User Interaction: None.
-   Scope: Unchanged — impact is confined to the affected proxy process.
-   Confidentiality Impact: None.
-   Integrity Impact: None.

Availability Impact: High — sustained or concurrent requests cause OOM process termination, taking down the proxy for all users of all shares it serves.

**Affected Components**

-   endpoints/oauthCookies.go — GetSessionCookie (line 81)
-   endpoints/publicProxy/authOAuth.go — handleOAuth (line 50) — call site, pre-auth
-   endpoints/dynamicProxy/cookies.go — getSessionCookie (line 29) — call site

## Affected Packages

2 total 1 fixed

Ecosystem

Package

Vulnerable range

Fix

🐹Go

`github.com/openziti/zrok` 

all versions

No fix

🐹Go

`github.com/openziti/zrok/v2` 

all versions

2.0.1`go get github.com/openziti/zrok/v2@v2.0.1`

## Affected Products

1 product · 1 configurations

Application

`zrok`netfoundry

< 2.0.1

range

## Detection & mitigation playbook

Open-source dependency

1.  ### Detect
    
    Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for github.com/openziti/zrok, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
    
2.  ### Fix
    
    A fix is available for CVE-2026-40303; check the affected-versions list above or the advisory for the patched release of github.com/openziti/zrok, then make sure no transitive dependency still pins the vulnerable range.
    
3.  ### Workarounds
    
    Cap what an attacker can consume: apply request size, rate and timeout limits in front of the affected component, and run it with memory and CPU limits so exhaustion degrades one worker rather than the whole service.
    

## Frequently Asked Questions

\*\*Summary\*\* endpoints.GetSessionCookie parses an attacker-supplied cookie chunk count and calls make(\[\]string, count) with no upper bound before any token validation occurs. The function is reached on every request to an OAuth-protected proxy share, allowing an unauthenticated remote attacker to trigger gigabyte-scale heap allocations per request, leading to process-level OOM termination or repeated goroutine panics. Both publicProxy and dynamicProxy are affected. - Attack Vector: Network — exploitable via a single HTTP request with a crafted Cookie header. - Attack Complexity: Low — no preco

O3 Security · Impact-Aware SCA

### Is CVE-2026-40303 in your dependencies?

Find it across Go, including transitive dependencies.

[Scan my dependencies](/book-demo) [How O3 SCA works](/impact-aware-sca)