Executive brief
zrok is a tool used to securely share web services and files across different networks. A security flaw in its Python integration allows an attacker to bypass the intended destination of a shared link and instead force the server to connect to arbitrary internal or external websites. This could lead to the exposure of sensitive internal data or allow the attacker to use the server as a jumping-off point for further attacks.
Technical details
A Server-Side Request Forgery (SSRF) vulnerability exists in the zrok Python SDK's ProxyShare Flask route. The application accepts a user-provided path and processes it using 'urllib.parse.urljoin' against a configured target host. Because 'urljoin' treats an absolute URL (e.g., 'http://internal-service/') as a replacement for the base URL rather than a suffix, an attacker can provide an absolute URL in the request path to override the intended destination. This allows the attacker to proxy requests through the zrok share to arbitrary internal or loopback services, potentially bypassing network access controls. The issue is resolved in version 2.0.3 by rejecting absolute paths in the proxy handler.
Affected products
- openziti zrok >= 0.4.47, < 2.0.3
Timeline
- 2026-05-07: patched: Fix committed in version 2.0.3
- 2026-05-13: advisory: GitHub Security Advisory GHSA-jh67-hwqw-m5r7 published
- 2026-07-16: disclosed: CVE-2026-45568 published to NVD