Skip to main content

Slab safeurl CVE-2026-77972

| EUVDEUVD-2026-78676 CRITICAL
Time-of-check Time-of-use (TOCTOU) Race Condition (CWE-367)
2026-09-15 EEF GHSA-pqwh-q74p-w7h4
9.0
CVSS 4.0 · Vendor: EEF
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Control authoritative DNS for a hostname
  2. Delivery
    Submit that hostname to the app's SafeURL-guarded request feature
  3. Exploit
    Answer first (validation) lookup with permitted public IP
  4. Install
    Validation returns approving verdict, not the vetted address
  5. C2
    Answer second (client) lookup with internal IP
  6. Execute
    HTTP client resolves and reaches internal destination
  7. Impact
    Exfiltrate 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).

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
No patch listed yet 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

safeurl feabbd0a13f83028ab24b71710526e9da9841f70 <*
safeurl 0.1.0 <*

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

Vendor (EEF) PRIMARY 9.0 CRITICAL
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
vuln.today AI 7.5 HIGH

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).

3.1 AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:L/A:N
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:L/VA:N/SC:H/SI:L/SA:N

Primary rating from Vendor (EEF).

CVSS VectorVendor: EEF

Attack Vector
Network
Attack Complexity
High
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
High
Subsequent system: Integrity
Low
Subsequent system: Availability
None

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.3%
Top 75% exploitable
Prevalence
Low
Niche Elixir SSRF-guard library, not even published to Hex per README
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.3%
Patch available No
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

45
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +45
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy