# CVE-2026-40302: zrok: Reflected XSS in GitHub OAuth callback via unsanitized refreshInterval error rendering

Source: https://junglewise.ai/threats/cve-2026-40302-zrok-reflected-xss-in-github-oauth-callback-via-unsanitized  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-04-17. Updated: 2026-05-11  
License: CC BY 4.0 with a link back

CVE-2026-40302 · Severity: medium · CVSS 6.1 · Published 2026-04-17

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.

Technologies: [github.com/openziti/zrok (Go)](https://junglewise.ai/threats/technologies/github-com-openziti-zrok), [github.com/openziti/zrok/v2 (Go)](https://junglewise.ai/threats/technologies/github-com-openziti-zrok-v2), [Netfoundry Zrok](https://junglewise.ai/threats/technologies/netfoundry-zrok). Vendors: [Go](https://junglewise.ai/threats/vendors/go), [Netfoundry](https://junglewise.ai/threats/vendors/netfoundry).

## Quick answers

**Is CVE-2026-40302 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2026-40302 being exploited in the wild.

**How severe is CVE-2026-40302?** Medium severity, with a CVSS score of 6.1, published 17 April 2026.

**Which products and versions are affected?** github.com/openziti/zrok (Go) <= 1.1.11, SEMVER:introduced=0, SEMVER:introduced=0,last_affected=1.1.11; github.com/openziti/zrok/v2 (Go) < 2.0.1, SEMVER:introduced=0,fixed=2.0.1.

**Is there a fix for CVE-2026-40302?** Yes. github.com/openziti/zrok/v2 (Go): upgrade to 2.0.1 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**Am I affected by CVE-2026-40302?** Check whether you run github.com/openziti/zrok (Go), github.com/openziti/zrok/v2 (Go) or Netfoundry Zrok at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## How to fix

- github.com/openziti/zrok/v2 (Go): upgrade to 2.0.1 or later

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


## Affected products

- github.com/openziti/zrok (Go) <= 1.1.11, SEMVER:introduced=0, SEMVER:introduced=0,last_affected=1.1.11
- github.com/openziti/zrok/v2 (Go) < 2.0.1, SEMVER:introduced=0,fixed=2.0.1
- Netfoundry Zrok

## Identifiers

- CVE-2026-40302
- GHSA-4fxq-2x3x-6xqx
- GO-2026-5118

## References

- [https://api.github.com/users/bugbunny-research](https://api.github.com/users/bugbunny-research)
- [https://github.com/bugbunny-research](https://github.com/bugbunny-research)
- [https://api.github.com/users/bugbunny-research/gists%7B/gist_id%7D](https://api.github.com/users/bugbunny-research/gists%7B/gist_id%7D)
- [https://api.github.com/users/bugbunny-research/repos](https://api.github.com/users/bugbunny-research/repos)
- [https://avatars.githubusercontent.com/u/262839898?v=4](https://avatars.githubusercontent.com/u/262839898?v=4)
- [https://api.github.com/users/bugbunny-research/events%7B/privacy%7D](https://api.github.com/users/bugbunny-research/events%7B/privacy%7D)

## Related threats

- [openziti zrok path traversal in zrok2 copy](https://junglewise.ai/threats/cve-2026-45576-openziti-zrok-path-traversal-in-zrok2-copy)
- [OpenZiti zrok symlink following in WebDAV drive backend](https://junglewise.ai/threats/cve-2026-42275-openziti-zrok-symlink-following-in-webdav-drive-backend)
- [zrok: Broken ownership check in DELETE /api/v2/unaccess allows non-admin to delete global frontend records](https://junglewise.ai/threats/cve-2026-40304-zrok-broken-ownership-check-in-delete-api-v2-unaccess-allows-non)
- [zrok: Unauthenticated DoS via unbounded memory allocation in striped session cookie parsing](https://junglewise.ai/threats/cve-2026-40303-zrok-unauthenticated-dos-via-unbounded-memory-allocation-in)
