Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify exposed Prefect 3.6.19 server
-
DeliveryCraft GET request to resource path ending in 'health' or 'ready'
-
ExploitAuth middleware suffix-match exempts request
-
ExecutionServer returns variable/flow/deployment data
-
PersistExtract API keys and DB credentials from Prefect Variables
-
ImpactPivot to downstream systems using harvested secrets
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that the target Prefect server (version 3.6.19) has server-side authentication enabled via PREFECT_SERVER_API_AUTH_STRING - instances running with no auth are not in scope of this bypass - and that the attacker has network reachability to the server's HTTP API. The attacker must either know an existing resource name (variable, flow, work pool, work queue, or deployment) whose name happens to end in 'health' or 'ready', or be able to create such a resource; a related Host-header variant works against ordinary endpoints when the attacker can set the Host header to a value like 'localhost/health?' (demonstrated in the regression test test_host_header_manipulation_does_not_bypass_auth). No user interaction, no credentials, and no special client tooling are required beyond an HTTP client. Limiting factors: the bypass yields confidentiality impact only (C:H/I:N/A:N), so it does not directly grant write access, and only GET requests are exempted by the middleware. |
| Impact | The CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N vector aligns cleanly with the technical reality: network-reachable, no privileges, no user interaction, and a confidentiality-only impact since the bypass exposes read access to variables, flows, work pools, work queues, and deployment metadata that frequently store API keys and database credentials. Real-world risk is meaningfully elevated by the fact that Prefect servers are often deployed inside internal networks but increasingly exposed via ingress for remote workers, and exploitation requires only knowing or guessing resource names ending in the exempted suffixes - which an attacker can also create themselves if any write path is reachable. EPSS and KEV data are not present in the provided intelligence, so I cannot quantitatively rank exploitation probability, but the trivial attack complexity, public huntr disclosure with a bounty writeup, and presence of a regression-tested fix in the upstream commit all argue this should be treated as a high-priority patch rather than a theoretical issue. There is no conflict between the CVSS network vector and the description; both consistently describe an unauthenticated HTTP-level bypass. |
| Exploit ScenarioDerived | An attacker who can reach an authenticated Prefect 3.6.19 server (directly or via a misconfigured ingress) sends GET /api/variables/name/system-health and, because the auth middleware sees a path ending in 'health', receives the variable's value - which Prefect commonly uses to store API keys, database DSNs, and other secrets. The same trick works against /api/flows/.../system-ready, /api/work_pools/<n>-health, /api/work_queues/<n>-ready, and /api/deployments/<n>-health, letting the attacker enumerate orchestration state and harvest credentials without ever presenting the basic-auth header. No public exploit identified at time of analysis, but the regression tests committed alongside the fix effectively document the exact request shapes needed. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 02, 2026
Authentication bypass in prefecthq/prefect 3.6.19 allows remote unauthenticated attackers to access sensitive API endpoints by naming resources with paths ending in 'health' or 'ready', exploiting overly broad suffix-matching in the auth middleware exemption logic. Confirmed exploitable per the huntr.com bounty disclosure and validated by the upstream patch which replaces suffix matching with exact path comparison. No public exploit identified at time of analysis, and no EPSS or KEV signal is provided in the available data.
RemediationAI
Upstream fix available (commit e21617125335025b4b27e7d6f0ca028e8e8f3b79); a released patched version is not independently confirmed in the provided data, so administrators should upgrade to the first prefecthq/prefect release that contains that commit (any version newer than 3.6.19 carrying the fix) and verify by checking that src/prefect/server/api/server.py uses exact-path matching against {health_check_path, '/ready'} rather than endswith(('health','ready')). Until the upgrade is applied, place the Prefect server behind a reverse proxy (nginx, Envoy, or an ingress controller) and add an explicit allowlist that only forwards GET /api/health and GET /api/ready without auth while requiring authentication on every other path - note this duplicates middleware logic and must be kept in sync with Prefect's own health-check path setting. As a stricter alternative, block external access to /api/variables/name/*, /api/flows/*, /api/work_pools/*, /api/work_queues/*, and /api/deployments/* at the proxy and audit existing resource names for any ending in 'health' or 'ready'; the trade-off is that legitimate clients with such names will break until renamed. Refer to the huntr advisory at https://huntr.com/bounties/c540e5e1-f74f-44f4-bfa0-9764ff6daa75 for the disclosure timeline.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in pypi, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Prefect is an open-source Python workflow orchestration platform whose server component (src/prefect/server/api/server.py) ships a Starlette/FastAPI authentication middleware. The middleware intentionally exempts Kubernetes-style liveness and readiness probes from auth checks, but in 3.6.19 the exemption used Python's str.endswith(('health', 'ready')) against request.url.path. This is a classic CWE-863 (Incorrect Authorization) flaw: because resource endpoints such as /api/variables/name/{name}, /api/flows, /api/work_pools, /api/work_queues, and /api/deployments embed user-controlled identifiers in the path, an attacker can craft a resource name like 'system-health' or 'prod-ready' so the resulting URL satisfies the suffix predicate and bypasses auth entirely. The patched code (commit e21617125335025b4b27e7d6f0ca028e8e8f3b79) hardens this by (1) restricting exempted paths to the exact set {health_check_path, '/ready'} and (2) reading scope['path'] minus root_path rather than request.url.path, which the regression tests show was spoofable through a crafted Host header like 'localhost/health?'.
Know when Prefecthq 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
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Primary rating from Vendor (huntr_ai) · only source for this CVE.
CVSS VectorVendor: huntr_ai
Lifecycle Timeline
1DescriptionCVE.org
In version 3.6.19 of prefecthq/prefect, an authentication bypass vulnerability exists due to the improper handling of URL path exemptions for health check probes. Specifically, the authentication middleware exempts any URL path ending with 'health' or 'ready' from authentication checks. This allows an attacker to create resources with names ending in 'health' or 'ready' and access them without authentication. Affected endpoints include those for variables, flows, work pools, work queues, and deployments. This vulnerability can lead to unauthorized access to sensitive information, such as API keys and database credentials, stored in Prefect Variables.
Executive ViewAI
Prefect 3.6.19 contains an authentication bypass vulnerability allowing remote attackers to access sensitive API endpoints through resource naming exploitation. Organizations using this version face exposure of workflow orchestration data and potential unauthorized API access until patching is available.
No vendor-released patch identified at time of analysis. Interim mitigations: Implement reverse proxy or WAF rules blocking requests to resources with names ending in 'health' or 'ready' from untrusted sources; restrict network access to API services via firewall rules; deploy API gateway authentication controls; implement comprehensive audit logging of API access to detect exploitation attempts.
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.
More in Prefecthq Prefect
View allRemote code execution in Prefect 3.6.23 allows any user holding deployment-creation permissions to run arbitrary command
Command injection in Prefect 3.6.18's GitHub integration allows authenticated users to execute arbitrary git commands th
EUVD-2026-33884
GHSA-c635-393c-hcx2
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB