zrok has reflected XSS in GitHub OAuth callback via unsanitized refreshInterval error rendering
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- Required
- Attack complexity
- Low
- Impact type
- Cross-site scripting
- Confidentiality · integrity · availability
- Low · Low · None
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-79.
Summary
zrok is software for sharing web services, files, and network resources. Prior to version 2.0.1, the proxyUi template engine uses Go's text/template (which performs no HTML escaping) instead of html/template. The GitHub OAuth callback handlers in both publicProxy and dynamicProxy embed the attacker-controlled refreshInterval query parameter verbatim into an error message when time.ParseDuration fails, and render that error unescaped into HTML. An attacker can deliver a crafted login URL to a victim; after the victim completes the GitHub OAuth flow, the callback page executes arbitrary JavaScript in the OAuth server's origin. Version 2.0.1 patches the issue.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| openziti | zrok | before 2.0.1 | 2.0.1 | Patch available | CNA |
| — | github.com/openziti/zrok (Go) | up to 1.1.11 | — | No fix listed | GHSA-4fxq-2x3x-6xqx |
| — | github.com/openziti/zrok/v2 (Go) | before 2.0.1 | 2.0.1 | Patch available | GHSA-4fxq-2x3x-6xqx |
- zrok Vendoropenziti Affected before 2.0.1 Fixed in 2.0.1 Patch available CNA
- github.com/openziti/zrok (Go) Vendor— Affected up to 1.1.11 Fixed in — No fix listed GHSA-4fxq-2x3x-6xqx
- github.com/openziti/zrok/v2 (Go) Vendor— Affected before 2.0.1 Fixed in 2.0.1 Patch available GHSA-4fxq-2x3x-6xqx
CPE configurations NVD · 1
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:netfoundry:zrok:*:*:*:*:*:*:*:* | before 2.0.1 | Vulnerable | Netfoundry |
- cpe:2.3:a:netfoundry:zrok:*:*:*:*:*:*:*:* Versions before 2.0.1 Vulnerable ·Netfoundry
Remediation
- Fix · CNA zrok (openziti) Fixed in 2.0.1
- Fix · GHSA-4fxq-2x3x-6xqx github.com/openziti/zrok/v2 (Go) Fixed in 2.0.1 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2026-40302
- 2026-10-03 Alias added: GHSA-4fxq-2x3x-6xqx
References
More openziti vulnerabilities
- TI-2026-33317 zrok Python ProxyShare can be used as an SSRF proxy through absolute URL paths CVSS 4.0CRITICAL 9.9
- TI-2025-20335 Cross Site Scripting potential in Ziti Console CVSS 3.1HIGH 8.2
- TI-2026-41883 OpenZiti - Privilege Escalation to Admin via Unauthorized Enrollment Creation CVSS 4.0HIGH 8.7
- TI-2026-30586 zrok: WebDAV drive backend follows symlinks outside DriveRoot, enabling host filesystem read/write CVSS 3.1HIGH 8.7
- TI-2026-29081 zrok allows unauthenticated DoS via unbounded memory allocation in striped session cookie parsing CVSS 3.1HIGH 7.5
- TI-2026-33325 zrok copy writes attacker-controlled WebDAV paths outside the destination root CVSS 4.0HIGH 8.3
Sources
- CVE-2026-40302 · CVE Program
- CVE-2026-40302 · NVD
- FIRST EPSS
- GHSA-4fxq-2x3x-6xqx · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences