Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAttacker probes Prefect API endpoint
-
DeliveryCrafts malicious path ending in health/ready or manipulates Host header
-
ExploitSends HTTP GET request to vulnerable /api/health or crafted path
-
ExecutionAuthentication middleware incorrectly allows bypass via suffix/header spoofing
-
PersistUnauthenticated access granted to health endpoint
-
ImpactSensitive system state information disclosed
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication mechanism validation
MITRE ATT&CK
2 techniques across 2 tactics: Defense Evasion, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Authentication must be enabled on the Prefect server via the PREFECT_SERVER_API_AUTH_STRING configuration setting. The Health Check API middleware is active in versions 3.6.21 and earlier. Exploitation requires only network access to the Prefect API server and does not require valid credentials, specific deployment mode, or user interaction. The vulnerability is exploitable against default configurations where authentication is configured but the middleware logic is flawed. Non-authenticated Prefect deployments (without PREFECT_SERVER_API_AUTH_STRING set) are not vulnerable since no authentication logic is invoked. |
| Impact | CVSS 5.5 (AV:N/AC:L/PR:N/UI:N/VC:L) indicates network-accessible authentication bypass with low complexity, no privileges required, and confidentiality impact only. EPSS score not provided, but the presence of publicly available exploit code combined with the straightforward nature of the attack (path manipulation via HTTP requests) suggests moderate real-world risk. The vulnerability is not in CISA KEV status at time of analysis, but public exploit availability lowers the barrier to exploitation. The technical impact is contained - attackers gain only unauthenticated read access to health status endpoints, not administrative capabilities. However, in environments where Prefect server is exposed to untrusted networks and health endpoint exposure is considered sensitive (e.g., information disclosure about system state), this represents a legitimate authentication control failure. Organizations with authentication enabled on Prefect deployments should treat this as medium priority given the low complexity and public POC, but the limited scope (health endpoints only, no data modification) prevents this from being critical. |
| Exploit ScenarioDerived | An attacker with network access to an unauthenticated Prefect server deployment crafts an HTTP GET request to /api/variables/name/system-health or similar path ending in "health". The vulnerable suffix matching logic incorrectly permits this request through the authentication middleware, returning health status information that would normally require authentication. Alternatively, the attacker sends a request to a protected endpoint (e.g., /api/version) with a crafted Host header value of "localhost/health?" that causes request.url.path to be reconstructed as /health, bypassing authentication checks while the actual endpoint served remains protected. A published proof-of-concept demonstrates this technique. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 04, 2026
Authentication bypass in Prefect up to version 3.6.21 allows remote unauthenticated attackers to access the Health Check API endpoint by manipulating the request path suffix matching logic. The vulnerability affects the /api/health endpoint's improper authentication validation using the endswith() function, enabling attackers to craft requests that bypass authentication checks. Publicly available exploit code exists and the vendor has released patch version 3.6.22.
RemediationAI
Upgrade to Prefect version 3.6.22 or later immediately. The patched version replaces suffix-based path matching with exact path comparison against a whitelist of {/health, /ready} endpoints and uses scope["path"] instead of request.url.path to prevent Host header spoofing. For organizations unable to upgrade immediately, implement network-level access controls by restricting access to the /api/health and /api/ready endpoints to trusted health probe sources only (e.g., Kubernetes node IPs, monitoring infrastructure). This workaround requires identifying all legitimate health probe clients and maintaining firewall rules accordingly, with the trade-off that legitimate probes from unexpected sources will be blocked. Additionally, disable authentication exemption entirely by removing the PREFECT_SERVER_API_AUTH_STRING setting if health probes can be configured to provide credentials, though this may require changes to monitoring infrastructure. Patch availability is confirmed: vendor-released patch version 3.6.22 at https://github.com/PrefectHQ/prefect/releases/tag/3.6.22.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Prefect's Health Check API middleware used suffix-based path matching via request.url.path.endswith(("health", "ready")) to exempt health probe requests from authentication. This implementation is vulnerable to two attack vectors: first, attacker-controlled paths ending in "health" or "ready" (e.g., /api/variables/name/system-health) would bypass authentication despite not being legitimate health endpoints; second, HTTP Host header manipulation could spoof the request.url.path value, allowing attackers to craft paths that appear to end with health/ready while accessing protected endpoints. The root cause is CWE-287 (Improper Authentication), stemming from reliance on URL suffix matching rather than exact path validation and trusting request.url.path which can be reconstructed from the Host header. The fix changes to exact path matching using scope["path"] (which is not spoofable) against a predefined set {/health, /ready}, eliminating both bypass vectors.
Know when Prefect gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P
Primary rating from Vendor (VulDB) · only source for this CVE.
CVSS VectorVendor: VulDB
Lifecycle Timeline
4DescriptionCVE.org
A vulnerability was detected in PrefectHQ prefect up to 3.6.21. This impacts the function endswith of the file /api/health of the component Health Check API. Performing a manipulation results in improper authentication. The attack is possible to be carried out remotely. The exploit is now public and may be used. Upgrading to version 3.6.22 will fix this issue. Upgrading the affected component is recommended.
Blast Radius
ecosystem impact- 2 pypi packages depend on prefect (2 direct, 1 indirect)
Ecosystem-wide dependent count for version 3.6.22.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Related Vulnerabilities in PrefectHQ prefect Multiple Vulnerabilities
View all 4Cross-Site Request Forgery (CSRF) in GitHub repository prefecthq/prefect prior to 2.16.5. Rated high severity (CVSS 8.8)
Remote code execution in PrefectHQ Prefect through version 3.8.2 allows authenticated users to inject arbitrary git argu
EUVD-2026-26875
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB