Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconControl authoritative DNS for a hostname
-
DeliverySubmit that hostname to the app's SafeURL-guarded request feature
-
ExploitAnswer first (validation) lookup with permitted public IP
-
InstallValidation returns approving verdict, not the vetted address
-
C2Answer second (client) lookup with internal IP
-
ExecuteHTTP client resolves and reaches internal destination
-
ImpactExfiltrate internal service data via SSRF
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture TOCTOU prevention
|
| Exploitation Conditions | Exploitation requires: (1) a host application that uses the safeurl library (versions 0.1.0 onward) to validate outbound request destinations before making HTTP requests via its bundled HTTPoison client; (2) the application accepting a hostname whose DNS the attacker controls (or that legitimately rotates addresses); and (3) the attacker winning the race between safeurl's validation lookup and HTTPoison's second, independent resolution - answering the first lookup with a permitted IP and the second with a blocked internal IP. Limiting factors: the attacker must operate authoritative DNS for the submitted name and reliably control resolution timing (reflected as AC:H/AT:P), and the affected app must actually route user-influenced URLs through safeurl. The same failure can also occur non-maliciously with short-TTL records or address rotation, which limits reliability but broadens accidental exposure. |
| Impact | This is a legitimate but conditional weakness rather than a broadly exploitable critical flaw. The vendor CVSS 4.0 score of 9.0 is driven by VC:H and SC:H (confidentiality of the vulnerable system and of subsequent internal systems reached via SSRF), but the vector itself tempers this with AC:H and AT:P - signaling that successful exploitation requires meeting a specific attack requirement (winning a DNS time-of-check/time-of-use race). No EPSS score, KEV listing, or public POC is present in the provided data, so exploitation status is: no public exploit identified at time of analysis. The CVSS vector contains PR:N (unauthenticated from the attacker's standpoint - the attacker needs control of authoritative DNS for a name, not credentials on the target). The realistic risk is moderate-to-high in the narrow set of deployments that use this Elixir SSRF-guard library to gate outbound requests to attacker-influenceable hostnames; elsewhere it is not a priority. The core issue is architecturally real and well-documented in the commit/description: validation returns a boolean verdict instead of the vetted IP, so the HTTP client re-resolves the hostname independently, defeating the check. Notably, the description confirms the race can also trigger benignly (DNS rotation / short TTLs), meaning the control can silently fail even without an attacker. |
| Exploit ScenarioDerived | An application uses Slab's safeurl to validate a user-supplied URL (e.g., a webhook target, link preview, or image fetcher) before making an outbound HTTP request. An attacker registers a hostname whose authoritative DNS they control and submits it; the first resolution (during validation) returns a public, permitted IP, but the second resolution (during the actual HTTPoison request) returns an internal address like 169.254.169.254 or 10.0.0.x, so the request reaches an internal destination validation would have rejected. No public exploit code is identified at time of analysis, and the attack requires winning the DNS resolution race (AC:H/AT:P). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 16, 2026
Server-side request forgery protection bypass in Slab safeurl (Elixir) 0.1.0 and later lets an attacker who controls authoritative DNS for a submitted hostname reach internal network destinations that validation had rejected. The library validates one DNS lookup but returns only a verdict rather than the approved address, so the bundled HTTPoison client resolves the original hostname a second time at request time and can be steered to a blocked internal IP. Exploitation is conditional - the attacker must control DNS for the name, win the resolution race, and the host application must route user-influenced URLs through safeurl (assessed CVSS:3.1 AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:L/A:N, high confidentiality impact); no public exploit code or confirmed active exploitation was identified at time of analysis, and the same race can occur non-maliciously with short-TTL or rotating DNS records.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed - the corrective change is commit feabbd0a13f83028ab24b71710526e9da9841f70 (https://github.com/slab/safeurl-elixir/commit/feabbd0a13f83028ab24b71710526e9da9841f70), which addresses the TOCTOU window; until a tagged hex release is published, pin the dependency to that commit in mix.exs. Where upgrading immediately is not possible, the most effective compensating control is to break the second resolution entirely: resolve the hostname yourself, validate the resulting IP against the blacklist/whitelist, and issue the request against that literal IP with the original hostname supplied in the Host header (and TLS SNI configured accordingly) - this eliminates the re-resolution but requires careful handling of TLS certificate validation and virtual-host routing. Additionally disable HTTP redirect following (follow_redirect: false) so redirect targets cannot bypass validation, restrict accepted schemes to http/https, and place an egress firewall or proxy in front of the application that denies traffic to RFC1918/link-local/metadata ranges (trade-off: the deny-list must be maintained and may break legitimate internal integrations). Network-layer egress filtering remains valuable even after patching because it catches any residual rebinding path; organizations that cannot control egress should restrict the feature to a fixed allowlist of trusted hostnames rather than accepting arbitrary user-supplied URLs.
Affected VersionsENISA
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
CWE-367 (Time-of-check Time-of-use Race Condition) in an Elixir URL-validation library designed to mitigate SSRF. safeurl wraps HTTPoison: it resolves the hostname in a supplied URL, checks the resulting address against a default blacklist of reserved/private CIDR ranges (0.0.0.0/8, 10.0.0.0/8, 100.64.0.0/10, 127.0.0.0/8, 169.254.0.0/16, 172.16.0.0/12, 192.168.0.0/16, 198.18.0.0/15, 224.0.0.0/4, 240.0.0.0/4 and others) or an optional whitelist, and only then issues the request. The design flaw is that the validation function returns a boolean verdict instead of the vetted IP address, so HTTPoison receives the original hostname and performs its own, independent resolution - the check and the use operate on different DNS answers. An attacker operating the authoritative nameserver can return a permitted address to the validation query and a blocked (internal) address to the request-time query, a variant of DNS rebinding. The affected artifact is the Elixir package slab:safeurl (CPE cpe:2.3:a:slab:safeurl:*:*:*:*:*:*:*:*, EUVD-2026-78676), with the fault present from version 0.1.0 onward.
Know when Safeurl 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:P/PR:N/UI:N/VC:H/VI:L/VA:N/SC:H/SI:L/SA:N
Network-reachable SSRF bypass but requires winning a DNS TOCTOU race (AC:H); attacker needs no target credentials (PR:N); SSRF crosses into internal systems (S:C), primarily reading internal data (C:H, I:L, A:N).
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
Time-of-check Time-of-use (TOCTOU) Race Condition in Slab safeurl allows an attacker who controls a hostname's DNS responses to reach internal network destinations that validation rejected.
Validation returns a verdict and not the address it approved, so the HTTP clients the library ships receive the original hostname and resolve it a second time when the request is made. An attacker who controls the authoritative DNS for a name can answer the first lookup with a permitted address and the second with a blocked one, and the request then reaches a destination validation never approved. The same window opens without an attacker whenever a name legitimately resolves to different addresses across lookups, such as short record lifetimes or rotation between several addresses.
This issue affects safeurl: from 0.1.0 onward.
Executive ViewAI
Slab safeurl (Elixir) versions 0.1.0 and later have a critical SSRF protection bypass that could let attackers reach internal network services, affecting any application that uses the library to validate user-influenced URLs. This creates a high confidentiality risk because internal data and systems may be exposed; No vendor-released patch identified at time of analysis, and no public exploit identified at time of analysis. Leadership should direct immediate mitigation efforts, as exploitation requires attacker-controlled DNS and a resolution race but could result in significant unauthorized access.
No vendor-released patch identified at time of analysis; interim mitigations include network-level egress filtering to block internal IP ranges, DNS pinning or a custom HTTP client that uses only the validated IP address, disabling safeurl for user-influenced URLs, and monitoring for DNS rebinding patterns such as short TTLs or rotating records.
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.
EUVD-2026-78676
GHSA-pqwh-q74p-w7h4
NVD
CVE.org
EPSS
Exploit-DB