Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAttacker registers DNS domain
-
DeliveryConfigures webhook URL to attacker domain
-
ExploitInitial validation check resolves to public IP
-
InstallURL passes SSRF check
-
C2HTTP connection initiated
-
ExecuteDNS rebinding returns private IP
-
ImpactUnprotected transport connects to private address
-
Step 8Sensitive webhook payload exfiltrated
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture TOCTOU prevention
|
| Exploitation Conditions | Exploitation requires an authenticated user (PR:L) with the ability to configure webhooks or notifications in Prefect. The attacker must control a DNS domain and be able to manipulate DNS responses with sub-second timing precision. The Prefect instance must have allow_private_urls set to False (the default secure configuration) or the webhook/notification must target a URL that validate_restricted_url would ordinarily restrict. Non-default configurations where allow_private_urls is True eliminate this vulnerability's impact, as they intentionally permit private address targets. Exploitation does not require user interaction (UI:N) beyond initial webhook/notification configuration, and can be triggered automatically when Prefect processes events. |
| Impact | Despite the low CVSS score of 1.3, this vulnerability presents a moderate real-world risk. The CVSS vector (AV:N/AC:H/AT:N/PR:L/UI:N) correctly reflects that exploitation requires network access, high complexity, and low privileges, yet the technical impact is limited to information disclosure (VC:L/VI:L/VA:L). However, multiple risk signals indicate tangible exploitability: publicly available proof-of-concept code exists, the attack methodology (DNS rebinding) is well-established, and the fix explicitly addresses a known TOCTOU window. The attack complexity is high because it requires precise timing and DNS control, and the tag indicates information disclosure rather than remote code execution. The vulnerability is NOT actively exploited in the wild (no KEV status), but the combination of public POC and low authentication requirement (PR:L) warrants expedited patching for internet-facing Prefect instances. Organizations with Prefect deployments exposed to untrusted users should prioritize this upgrade, particularly if webhooks or notifications route to sensitive internal services. The limited scope (information disclosure, no integrity or availability impact) and requirement for authenticated attackers reduce criticality compared to network-accessible RCE, but the TOCTOU nature makes it a teaching example for why static URL validation is insufficient for SSRF protection. |
| Exploit ScenarioDerived | An authenticated user (satisfying PR:L requirement) configures a webhook notification URL pointing to a hostname under attacker control. The attacker's DNS server initially returns a public IP address when Prefect's validate_restricted_url function performs its pre-connection check, allowing the URL to pass validation. When Prefect's HTTP client actually establishes the connection moments later, the attacker's DNS server returns a private IP address (e.g., 127.0.0.1) via DNS rebinding. The unprotected HTTP transport connects to the private address and inadvertently exfiltrates webhook data or notification content that should have been restricted. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 04, 2026
Time-of-check time-of-use (TOCTOU) vulnerability in Prefect's validate_restricted_url function allows remote attackers with low privileges to bypass Server-Side Request Forgery (SSRF) protections via DNS rebinding attacks during webhook and notification delivery. Publicly available exploit code exists. The vulnerability affects Prefect versions up to 3.6.28.dev1 and is fixed in 3.6.28.dev2.
RemediationAI
Upgrade to Prefect version 3.6.28.dev2 or later, which includes the fix identified by commit 7c70ac54a5e101431d83b9f2681ec88d5e0021ed and released at https://github.com/PrefectHQ/prefect/releases/tag/3.6.28.dev2. The patch replaces simple DNS validation with SSRF-protected HTTP transports that re-validate resolved IPs at connection time and enforce IP pinning. No workarounds are available short of upgrading, as the vulnerability is structural to the validation-before-connection pattern. Organizations unable to upgrade immediately should restrict webhook and notification destinations to allowlisted fully-qualified domain names (FQDNs) that resolve only to public IP addresses, disable dynamic DNS for notification targets, and implement network segmentation to prevent HTTP clients from reaching internal services-these controls mitigate but do not eliminate the risk, as DNS rebinding can still occur within the allowed set.
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
The vulnerability exists in the webhook and notification components' URL validation logic (CWE-367: Improper Synchronization). The validate_restricted_url function performs initial DNS resolution and IP validation to prevent SSRF attacks targeting private addresses, but this validation occurs before the actual HTTP connection is established. An attacker can exploit the time gap between validation and connection by performing DNS rebinding: the hostname initially resolves to a public IP (passing validation), then resolves to a private IP (like 127.0.0.1 or 10.0.0.0/8) when the HTTP client actually establishes the connection. The fix implements SSRFProtectedAsyncHTTPTransport and SSRFProtectedHTTPTransport that re-validate the resolved IP at connection time and pin the connection to the pre-resolved address, eliminating the TOCTOU window. The patch also upgrades from socket.gethostbyname (which returns only the first A record) to socket.getaddrinfo (which validates all resolved addresses), closing an additional bypass where a hostname publishes both public and private records.
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:H/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P
Primary rating from Vendor (VulDB) · only source for this CVE.
CVSS VectorVendor: VulDB
Lifecycle Timeline
5DescriptionCVE.org
A vulnerability has been found in PrefectHQ prefect up to 3.6.28.dev1. Affected by this vulnerability is the function validate_restricted_url of the component Webhook/Notification. The manipulation leads to time-of-check time-of-use. It is possible to initiate the attack remotely. The attack is considered to have high complexity. The exploitation appears to be difficult. The exploit has been disclosed to the public and may be used. Upgrading to version 3.6.28.dev2 addresses this issue. The identifier of the patch is 7c70ac54a5e101431d83b9f2681ec88d5e0021ed. Upgrading the affected component is advised.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
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-26879
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB