GHSA-cpf9-ph2j-ccr9
zrok: Unauthenticated DoS via unbounded memory allocation in striped session cookie parsing
Packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| Go | github.com/openziti/zrok | <= 1.1.11 | no fix listed |
| Go | github.com/openziti/zrok/v2 | < 2.0.1 | 2.0.1 |
Details
As written in the advisory (Markdown source, shown as plain text).
**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
References
External links from the advisory. They lead to third-party sites.