Vulnerability Details CVE-2026-47076
Interpretation Conflict vulnerability in benoitc hackney allows Server Side Request Forgery. hackney_url:normalize/2 URL-decodes the host component after the URL has been parsed into a #hackney_url{} record. OTP's uri_string:parse/1 and inet:parse_address/1 do not decode percent-escapes in the host, so a URL such as http://%31%32%37%2E%30%2E%30%2E%31/ is seen by a caller's allowlist validator with host %31%32%37%2E%30%2E%30%2E%31 (not an IP address), which passes the allowlist check. hackney's normalizer then decodes the host to 127.0.0.1 and opens a TCP connection to loopback. Because hackney:request/5 always calls hackney_url:normalize/2 with no opt-out, every request that takes a binary or list URL is affected. The same technique reaches cloud instance metadata services (169.254.169.254), RFC1918 networks, and any admin interface listening on localhost.
This issue affects hackney: from 0.13.0 before 4.0.1.
Exploit prediction scoring system (EPSS) score
EPSS Score 0.0
EPSS Ranking 2.8%
CVSS Severity
CVSS v3 Score 6.5
Products affected by CVE-2026-47076
-
cpe:2.3:a:benoitc:hackney:0.13.0
-
cpe:2.3:a:benoitc:hackney:0.13.1
-
cpe:2.3:a:benoitc:hackney:0.14.0
-
cpe:2.3:a:benoitc:hackney:0.14.1
-
cpe:2.3:a:benoitc:hackney:0.14.2
-
cpe:2.3:a:benoitc:hackney:0.14.3
-
cpe:2.3:a:benoitc:hackney:0.15.0
-
cpe:2.3:a:benoitc:hackney:0.15.1
-
cpe:2.3:a:benoitc:hackney:0.15.2
-
cpe:2.3:a:benoitc:hackney:0.16.0
-
cpe:2.3:a:benoitc:hackney:1.0.0
-
cpe:2.3:a:benoitc:hackney:1.0.1
-
cpe:2.3:a:benoitc:hackney:1.0.2
-
cpe:2.3:a:benoitc:hackney:1.0.3
-
cpe:2.3:a:benoitc:hackney:1.0.4
-
cpe:2.3:a:benoitc:hackney:1.0.5
-
cpe:2.3:a:benoitc:hackney:1.0.6
-
cpe:2.3:a:benoitc:hackney:1.1.0
-
cpe:2.3:a:benoitc:hackney:1.10.0
-
cpe:2.3:a:benoitc:hackney:1.10.1
-
cpe:2.3:a:benoitc:hackney:1.11.0
-
cpe:2.3:a:benoitc:hackney:1.12.0
-
cpe:2.3:a:benoitc:hackney:1.12.1
-
cpe:2.3:a:benoitc:hackney:1.13.0
-
cpe:2.3:a:benoitc:hackney:1.14.0
-
cpe:2.3:a:benoitc:hackney:1.14.2
-
cpe:2.3:a:benoitc:hackney:1.14.3
-
cpe:2.3:a:benoitc:hackney:1.15.0
-
cpe:2.3:a:benoitc:hackney:1.15.1
-
cpe:2.3:a:benoitc:hackney:1.15.2
-
cpe:2.3:a:benoitc:hackney:1.16.0
-
cpe:2.3:a:benoitc:hackney:1.17.0
-
cpe:2.3:a:benoitc:hackney:1.17.1
-
cpe:2.3:a:benoitc:hackney:1.17.2
-
cpe:2.3:a:benoitc:hackney:1.17.3
-
cpe:2.3:a:benoitc:hackney:1.17.4
-
cpe:2.3:a:benoitc:hackney:1.18.0
-
cpe:2.3:a:benoitc:hackney:1.18.1
-
cpe:2.3:a:benoitc:hackney:1.18.2
-
cpe:2.3:a:benoitc:hackney:1.19.0
-
cpe:2.3:a:benoitc:hackney:1.19.1
-
cpe:2.3:a:benoitc:hackney:1.2.0
-
cpe:2.3:a:benoitc:hackney:1.20.0
-
cpe:2.3:a:benoitc:hackney:1.20.1
-
cpe:2.3:a:benoitc:hackney:1.21.0
-
cpe:2.3:a:benoitc:hackney:1.22.0
-
cpe:2.3:a:benoitc:hackney:1.23.0
-
cpe:2.3:a:benoitc:hackney:1.24.0
-
cpe:2.3:a:benoitc:hackney:1.24.1
-
cpe:2.3:a:benoitc:hackney:1.25.0
-
cpe:2.3:a:benoitc:hackney:1.3.0
-
cpe:2.3:a:benoitc:hackney:1.3.1
-
cpe:2.3:a:benoitc:hackney:1.3.2
-
cpe:2.3:a:benoitc:hackney:1.4.0
-
cpe:2.3:a:benoitc:hackney:1.4.1
-
cpe:2.3:a:benoitc:hackney:1.4.10
-
cpe:2.3:a:benoitc:hackney:1.4.2
-
cpe:2.3:a:benoitc:hackney:1.4.3
-
cpe:2.3:a:benoitc:hackney:1.4.4
-
cpe:2.3:a:benoitc:hackney:1.4.5
-
cpe:2.3:a:benoitc:hackney:1.4.6
-
cpe:2.3:a:benoitc:hackney:1.4.7
-
cpe:2.3:a:benoitc:hackney:1.4.8
-
cpe:2.3:a:benoitc:hackney:1.4.9
-
cpe:2.3:a:benoitc:hackney:1.5.0
-
cpe:2.3:a:benoitc:hackney:1.5.1
-
cpe:2.3:a:benoitc:hackney:1.5.2
-
cpe:2.3:a:benoitc:hackney:1.5.4
-
cpe:2.3:a:benoitc:hackney:1.5.5
-
cpe:2.3:a:benoitc:hackney:1.5.6
-
cpe:2.3:a:benoitc:hackney:1.5.7
-
cpe:2.3:a:benoitc:hackney:1.6.0
-
cpe:2.3:a:benoitc:hackney:1.6.1
-
cpe:2.3:a:benoitc:hackney:1.6.2
-
cpe:2.3:a:benoitc:hackney:1.6.3
-
cpe:2.3:a:benoitc:hackney:1.6.4
-
cpe:2.3:a:benoitc:hackney:1.6.5
-
cpe:2.3:a:benoitc:hackney:1.6.6
-
cpe:2.3:a:benoitc:hackney:1.7.0
-
cpe:2.3:a:benoitc:hackney:1.7.1
-
cpe:2.3:a:benoitc:hackney:1.8.0
-
cpe:2.3:a:benoitc:hackney:1.8.2
-
cpe:2.3:a:benoitc:hackney:1.8.3
-
cpe:2.3:a:benoitc:hackney:1.8.4
-
cpe:2.3:a:benoitc:hackney:1.8.5
-
cpe:2.3:a:benoitc:hackney:1.8.6
-
cpe:2.3:a:benoitc:hackney:1.9.0
-
cpe:2.3:a:benoitc:hackney:2.0.0
-
cpe:2.3:a:benoitc:hackney:2.0.1
-
cpe:2.3:a:benoitc:hackney:3.0.0
-
cpe:2.3:a:benoitc:hackney:3.0.1
-
cpe:2.3:a:benoitc:hackney:3.0.2
-
cpe:2.3:a:benoitc:hackney:3.0.3
-
cpe:2.3:a:benoitc:hackney:3.1.0
-
cpe:2.3:a:benoitc:hackney:3.1.1
-
cpe:2.3:a:benoitc:hackney:3.1.2
-
cpe:2.3:a:benoitc:hackney:3.2.0
-
cpe:2.3:a:benoitc:hackney:3.2.1
-
cpe:2.3:a:benoitc:hackney:4.0.0