{"containers":{"cna":{"affected":[{"collectionURL":"https://repo.hex.pm","cpes":["cpe:2.3:a:slab:safeurl:*:*:*:*:*:*:*:*"],"defaultStatus":"unaffected","modules":["'Elixir.SafeURL'"],"packageName":"safeurl","packageURL":"pkg:hex/safeurl","product":"safeurl","programFiles":["lib/safeurl/safeurl.ex"],"programRoutines":[{"name":"'Elixir.SafeURL':validate/2"},{"name":"'Elixir.SafeURL':allowed?/2"}],"repo":"https://github.com/slab/safeurl-elixir","vendor":"Slab","versions":[{"lessThan":"*","status":"affected","version":"0.1.0","versionType":"semver"}]},{"collectionURL":"https://github.com","cpes":["cpe:2.3:a:slab:safeurl:*:*:*:*:*:*:*:*"],"defaultStatus":"unaffected","modules":["'Elixir.SafeURL'"],"packageName":"slab/safeurl-elixir","packageURL":"pkg:github/slab/safeurl-elixir","product":"safeurl","programFiles":["lib/safeurl/safeurl.ex"],"programRoutines":[{"name":"'Elixir.SafeURL':validate/2"},{"name":"'Elixir.SafeURL':allowed?/2"}],"repo":"https://github.com/slab/safeurl-elixir","vendor":"Slab","versions":[{"lessThan":"*","status":"affected","version":"feabbd0a13f83028ab24b71710526e9da9841f70","versionType":"git"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:a:slab:safeurl:*:*:*:*:*:*:*:*","versionStartIncluding":"0.1.0","vulnerable":true}],"negate":false,"operator":"OR"}],"operator":"AND"}],"credits":[{"lang":"en","type":"reporter","value":"Mathias Polligkeit"},{"lang":"en","type":"coordinator","value":"Jonatan Männchen / EEF"}],"datePublic":"2026-09-15T15:38:16.000Z","descriptions":[{"lang":"en","supportingMedia":[{"base64":false,"type":"text/html","value":"<p>Server-Side Request Forgery (SSRF) vulnerability in Slab safeurl allows an attacker who controls a validated URL to reach internal network destinations the library is configured to block.</p>\n<p>Only IPv4 addresses are matched against the reserved ranges and the blocklist. Every other address is treated as matching nothing, so a destination that is rejected in its IPv4 form is accepted when written as an IPv6 address, IPv6 entries in the blocklist never match, and a host that resolves to no IPv4 address is accepted regardless of where it points. Deployments that rely on the allowlist instead are unaffected, because there an unmatched address is rejected.</p>\n<p>This issue affects safeurl: from 0.1.0 onward.</p>"},{"base64":false,"type":"text/markdown","value":"Server-Side Request Forgery (SSRF) vulnerability in Slab safeurl allows an attacker who controls a validated URL to reach internal network destinations the library is configured to block.\n\nOnly IPv4 addresses are matched against the reserved ranges and the blocklist. Every other address is treated as matching nothing, so a destination that is rejected in its IPv4 form is accepted when written as an IPv6 address, IPv6 entries in the blocklist never match, and a host that resolves to no IPv4 address is accepted regardless of where it points. Deployments that rely on the allowlist instead are unaffected, because there an unmatched address is rejected.\n\nThis issue affects safeurl: from 0.1.0 onward."}],"value":"Server-Side Request Forgery (SSRF) vulnerability in Slab safeurl allows an attacker who controls a validated URL to reach internal network destinations the library is configured to block.\n\nOnly IPv4 addresses are matched against the reserved ranges and the blocklist. Every other address is treated as matching nothing, so a destination that is rejected in its IPv4 form is accepted when written as an IPv6 address, IPv6 entries in the blocklist never match, and a host that resolves to no IPv4 address is accepted regardless of where it points. Deployments that rely on the allowlist instead are unaffected, because there an unmatched address is rejected.\n\nThis issue affects safeurl: from 0.1.0 onward."}],"impacts":[{"capecId":"CAPEC-664","descriptions":[{"lang":"en","value":"CAPEC-664 Server Side Request Forgery"}]}],"metrics":[{"cvssV4_0":{"Automatable":"NOT_DEFINED","Recovery":"NOT_DEFINED","Safety":"NOT_DEFINED","attackComplexity":"LOW","attackRequirements":"PRESENT","attackVector":"NETWORK","baseScore":9,"baseSeverity":"CRITICAL","privilegesRequired":"NONE","providerUrgency":"NOT_DEFINED","subAvailabilityImpact":"NONE","subConfidentialityImpact":"HIGH","subIntegrityImpact":"LOW","userInteraction":"NONE","valueDensity":"NOT_DEFINED","vectorString":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:L/VA:N/SC:H/SI:L/SA:N","version":"4.0","vulnAvailabilityImpact":"NONE","vulnConfidentialityImpact":"HIGH","vulnIntegrityImpact":"LOW","vulnerabilityResponseEffort":"NOT_DEFINED"},"format":"CVSS","scenarios":[{"lang":"en","value":"GENERAL"}]}],"problemTypes":[{"descriptions":[{"cweId":"CWE-918","description":"CWE-918 Server-Side Request Forgery (SSRF)","lang":"en","type":"CWE"}]},{"descriptions":[{"cweId":"CWE-636","description":"CWE-636 Not Failing Securely ('Failing Open')","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-09-15T15:39:37.321Z","orgId":"6b3ad84c-e1a6-4bf7-a703-f496b71e49db","shortName":"EEF"},"references":[{"name":"EEF CNA record for CVE-2026-77866","tags":["related","third-party-advisory"],"url":"https://cna.erlef.org/cves/CVE-2026-77866.html"},{"name":"OSV record EEF-CVE-2026-77866","tags":["related"],"url":"https://osv.dev/vulnerability/EEF-CVE-2026-77866"},{"name":"Introducing commit feabbd0 in slab/safeurl-elixir","tags":["related"],"url":"https://github.com/slab/safeurl-elixir/commit/feabbd0a13f83028ab24b71710526e9da9841f70"}],"source":{"discovery":"EXTERNAL"},"title":"SSRF protection bypass in safeurl via IPv6 addresses and unresolvable hosts"}},"cveMetadata":{"assignerOrgId":"6b3ad84c-e1a6-4bf7-a703-f496b71e49db","assignerShortName":"EEF","cveId":"CVE-2026-77866","datePublished":"2026-09-15T15:38:15.886Z","dateReserved":"2026-08-30T00:00:01.985Z","dateUpdated":"2026-09-15T15:39:37.321Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"}