Listen to this Post
CVE-2026-45568: Technical Deep-Dive
CVE-2026-45568 is a critical Server-Side Request Forgery (SSRF) vulnerability found in the zrok Python SDK, specifically within its `ProxyShare` Flask-based proxy route. zrok is a software platform designed for sharing web services, files, and network resources. The flaw resides in how the Flask route handler processes incoming request paths.
The core of the issue lies in the `proxy()` function, which is mapped to all paths under a share using Flask’s route decorators (@app.route('/', defaults={'path': ''}) and @app.route('/<path:path>')). This function is intended to act as a reverse proxy, forwarding requests to a pre-configured target URL (the `self.target` variable) set by the user (Alice). The vulnerability is triggered when an attacker (Bob) sends a request to the share with an absolute URL in the path.
The flawed code constructs the outbound URL by passing the `self.target` and the user-supplied `path` to the `urllib.parse.urljoin` function: url = urllib.parse.urljoin(self.target, path). The critical behavior of `urljoin` is that if the second argument (path) is an absolute URL, it completely replaces the base URL (self.target) with the new absolute URL. For example, if `self.target` is https://internal-api.corp/` and the `path` ishttp://169.254.169.254/latest/meta-data/`, `urljoin` will return http://169.254.169.254/latest/meta-data/`. The proxy then uses the `requests.request` method to send the HTTP request to this attacker-controlled URL, returning the server's response back to the attacker.
This bypasses the intended proxy restriction, allowing an attacker to force the zrok server to make arbitrary HTTP requests to any internal or external resource. The impact is severe as it can lead to the exposure of sensitive internal services, cloud metadata endpoints, and other critical infrastructure that is accessible from the server's network. The vulnerability affects all zrok Python SDK versions from v0.4.47 up to, but not including, v2.0.3. The issue was patched in version 2.0.3, which implements proper validation to ensure the `path` does not contain an absolute URL, thereby preserving the integrity of the intended target host.
<h2 style="color: blue;">DailyCVE Form</h2>
Platform: Python SDK
Version: v0.4.47 - v2.0.2
Vulnerability: Server-Side Request Forgery
Severity: Critical (CVSS 9.9)
date: 19 May 2026
<h2 style="color: blue;">Prediction: 19 May 2026</h2>
<h2 style="color: blue;">What Undercode Say: Analytics</h2>
The vulnerability stems from a classic case of improper input validation leading to SSRF.
Check installed zrok version pip show zrok Affected versions: >=0.4.47, <2.0.3
<h2 style="color: blue;">The core vulnerable code snippet is as follows:</h2>
@app.route('/', defaults={'path': ''}, methods=['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'])
@app.route('/<path:path>', methods=['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'])
def proxy(path):
Vulnerable line: urljoin replaces target with an absolute URL in 'path'
url = urllib.parse.urljoin(self.target, path)
resp = requests.request(
method=request.method,
url=url,
... other parameters
)
...
<h2 style="color: blue;">Exploit:</h2>
An attacker can exploit this by sending a request to the public zrok share URL with an absolute URL in the path.
Example exploit targeting a public zrok share curl "https://<public-zrok-share-url>/http://169.254.169.254/latest/meta-data/"
In this example, the zrok server would fetch and return the AWS EC2 instance metadata, which is a classic SSRF target. The attacker could also target internal services, databases, or other network-accessible resources.
<h2 style="color: blue;">Protection:</h2>
1. Immediate Action: Upgrade the `zrok` Python package to version 2.0.3 or later.
pip install --upgrade zrok
2. Temporary Workaround: If an immediate upgrade is not possible, implement a validation check on the incoming `path` parameter to reject any request containing an absolute URL (e.g., strings starting withhttp://` or `https://`).
Impact:
- Confidentiality (High): An attacker can read sensitive information from internal services, such as configuration files, cloud metadata (IAM credentials, etc.), and data from internal APIs.
- Integrity (High): While primarily an information disclosure issue, an attacker could potentially interact with internal APIs to modify data or state, depending on the accessible services.
- Availability (Low): The vulnerability is not directly intended for denial-of-service, but an attacker could potentially overload internal services or cause other indirect availability impacts.
- Scope (Changed): The vulnerability allows an attacker to break out of the intended proxy’s security boundary (the configured target) and access resources on the broader internal network.
🎯Let’s Practice Exploiting & Learn Patching For Free:
🎓 Live Courses & Certifications:
Join Undercode Academy for Verified Certifications
🚀 Request a Custom Project:
Secure, high-velocity infrastructure and disruptive technological engineering. Contact our engineering team for high-tier development and proprietary systems:
[email protected]
💎 Smart Architecture | 🛡️ Secure by Design | ⭐ Trusted by Thousands
Sources:
Reported By: nvd.nist.gov
Extra Source Hub:
Undercode

