Skip to main content

hackney CVE-2026-115700

| EUVDEUVD-2026-109834 MEDIUM
Interpretation Conflict (CWE-436)
2026-10-26 EEF GHSA-8c7g-m8h7-q24x
6.9
CVSS 4.0 · Vendor: EEF
View

Attack ChainAIDerived

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

  1. Access
    Craft URL with percent-encoded bracketed IPv6 or trailing-dot IP
  2. Delivery
    Submit to app using hackney allowlist
  3. Exploit
    Allowlist parser fails to classify host as an IP literal
  4. Execution
    hackney normalize/connect reaches the literal loopback/internal address
  5. Impact
    Access internal service or metadata endpoint

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V4 - API and Web Service Interpretation consistency
Exploitation Conditions

Exploitation requires a consuming application that (1) builds an SSRF host allowlist/denylist using uri_string:parse/1 and inet:parse_address/1, and (2) passes the attacker-influenced URL (or a followed redirect Location) to hackney versions 4.0.1 up to but not including 4.9.0. The attacker must supply the host in one of two exact spellings: a percent-encoded bracketed IPv6 literal (e.g. %5B%3A%3Affff%3A127%2E0%2E0%2E1%5D decoding to [::ffff:127.0.0.1]) or an IP literal with a trailing dot (e.g. 127.0.0.1.). Limiting factors: unencoded IPv6 literals and domain names with a trailing dot are NOT affected; the bypass is meaningless unless the application relies on the vulnerable validation pattern; and applications on 4.9.0 or later are protected. No authentication is indicated by the vector (PR:N), and no user interaction is required (UI:N).

Impact

This is a genuine but moderate-priority SSRF (CVSS 4.0 base 6.9, Medium; CWE-436 Interpretation Conflict). The decision signals are consistent and point to urgency below the top tier: the vuln.today priority label is 'this_month', not act_now/emergency; there is no CISA KEV listing and no EPSS score supplied; and no public exploit is identified. A vendor patch (4.9.0) is confirmed available. Realistic risk is gated heavily by the exploitation pre-condition: the flaw only matters to applications that build an SSRF allowlist/denylist using uri_string:parse/1 plus inet:parse_address/1 and then pass the host to hackney - exactly the defensive pattern CVE-2026-47076 was meant to protect, which this bypasses. Where that pattern is used, impact is real (internal/loopback reachability, confidentiality of internal services). A notable signal conflict: the supplied CVSS 4.0 vector uses AV:L (local), whereas SSRF driven by an attacker-supplied URL or redirect Location is typically network-reachable (AV:N) when the consuming app accepts remote input - the effective vector depends on how the downstream application sources the URL, so verify against your own data flow rather than assuming local-only access. No integrity or availability impact is indicated by the metrics (VI:N/VA:N).

Exploit ScenarioDerived

An application uses hackney with an SSRF allowlist that validates the destination host via uri_string:parse/1 and inet:parse_address/1 before fetching a user-supplied URL. The attacker submits a host such as %5B%3A%3Affff%3A127%2E0%2E0%2E1%5D (decoding to [::ffff:127.0.0.1]) or 127.0.0.1. with a trailing dot; the allowlist does not recognize these as IP literals and permits them, but hackney's connect path strips the brackets / ignores the trailing dot and connects to the loopback/internal address anyway. No public exploit code is identified at time of analysis; the same bypass applies to a redirect Location when redirects are followed.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.1% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 26, 2026

Server-side request forgery in the Erlang hackney HTTP client (versions 4.0.1 up to but not including 4.9.0) lets an attacker steer outbound requests to loopback or private addresses that the calling application believes its SSRF allowlist has already rejected. Two host spellings slip past the check - a percent-encoded bracketed IPv6 literal such as %5B%3A%3Affff%3A127%2E0%2E0%2E1%5D (decoding to [::ffff:127.0.0.1]) and an IP literal with a trailing dot such as 127.0.0.1. - because the caller's validation parses them differently from hackney's connect path; the same applies to a redirect Location target when redirects are followed. Exploitation is conditional on a consuming application that builds its allowlist with uri_string:parse/1 and inet_parse_address/1 and then passes an attacker-influenced URL to a vulnerable hackney release, so attack complexity is high and the CNA scores the issue 6.9 (Medium) under CVSS 4.0; no public exploit has been identified at time of analysis.

RemediationAI

Vendor-released patch: hackney 4.9.0 - upgrade any 4.0.1 through 4.8.x dependency to 4.9.0, which refuses URLs that hide a loopback or private IP behind a percent-encoded bracketed IPv6 literal or a trailing dot (release notes: https://github.com/benoitc/hackney/releases/tag/4.9.0; advisory: https://cna.erlef.org/cves/CVE-2026-115700.html; fix commits f19561a0b422376348c91537e51377ab7325f4ee and 452620a92ec1da2e6b4862a049a2a4f04b42068f via PR https://github.com/benoitc/hackney/pull/987). The advisory and release notes present that normalization change as the fix and document no separate workaround, so an application that cannot upgrade immediately remains exposed whenever it passes attacker-influenced URLs or followed redirect targets into hackney while relying on the uri_string:parse/1 plus inet_parse_address/1 pattern for its SSRF allowlist; upgrading to 4.9.0 additionally picks up the same release's fixes for CA pinning bypass, basic_auth/cookie forwarding on cross-port or HTTPS-to-HTTP redirects, unbounded buffered and auto-decompressed response bodies, CONNECT proxy certificate verification, and CR/LF/NUL injection through proxy_auth_fun, which are worth scheduling together with this update.

Affected VersionsENISA

hackney 452620a92ec1da2e6b4862a049a2a4f04b42068f <f19561a0b422376348c91537e51377ab7325f4ee
hackney 4.0.1 <4.9.0

Affected Packages

euvd hackney fix: 4.9.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The root cause is an interpretation conflict (CWE-436) between two Erlang URL/address parsers used on the same input. hackney_url:normalize/2 applies an IP-literal gate to the percent-decoded host and hands the decoded value as-is to inet_parse:address/1; a bracketed IPv6 literal that only becomes bracketed after percent-decoding, or an IPv4 literal with a trailing dot, is not recognised as an address by that call, so the value is treated as a hostname. The connect path then disagrees: hackney_happy:parse_address/1 drops a surrounding bracket pair before connecting, and the resolver ignores a trailing dot, so both spellings still reach the literal address they denote. The gate itself was introduced to close the percent-encoded IP bypass of CVE-2026-47076 and does not cover these two variants. Unencoded IPv6 literals and domain names with a trailing dot behave consistently across both parsers and are not affected. The project addressed the gap in 4.9.0, which refuses URLs that hide a loopback or private IP inside a percent-encoded bracketed IPv6 address or behind a trailing dot (PR #987, commits f19561a0b422376348c91537e51377ab7325f4ee and 452620a92ec1da2e6b4862a049a2a4f04b42068f); the same release also hardened CA pinning, redirect credential forwarding, response body limits and CONNECT proxy certificate checks. The CNA scores it 6.9 under CVSS 4.0, and the assessed severity is CVSS 3.1 AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:N/A:N - high attack complexity reflects the dependency on the consumer's specific validation pattern rather than any timing or race condition, and the vector indicates no privileges and no user interaction are required.

Know when Hackney 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 6.9 MEDIUM
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N
vuln.today AI 6.8 MEDIUM

SSRF from an attacker-supplied URL is network-reachable (AV:N); the specific allowlist pattern and crafted encoding make it AC:H; no auth (PR:N) and the reached internal system is a scope change (S:C, C:H).

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

Primary rating from Vendor (EEF).

CVSS VectorVendor: EEF

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

DescriptionCVE.org

Interpretation Conflict vulnerability in hackney_url in benoitc hackney allows Server Side Request Forgery via a percent-encoded bracketed IPv6 literal or an IP literal with a trailing dot. A host such as %5B%3A%3Affff%3A127%2E0%2E0%2E1%5D (decoding to [::ffff:127.0.0.1]) or 127.0.0.1. is not an IP address to a caller's allowlist built on uri_string:parse/1 and inet:parse_address/1, while hackney connects to the address it denotes. The same applies to a Location target when redirects are followed.

The IP-literal gate that hackney_url:normalize/2 applies to a percent-decoded host, added to close the percent-encoded IP bypass of CVE-2026-47076, passes the decoded value to inet_parse:address/1 as is. The connect path in hackney_happy:parse_address/1 drops a surrounding bracket pair, and the resolver ignores a trailing dot, so both forms pass the gate and still reach the literal address. Domain names with a trailing dot and unencoded IPv6 literals are not affected.

This issue affects hackney: from 4.0.1 before 4.9.0.

Threat Intelligence Overview

EPSS Score
0.1%
Top 97% exploitable
Prevalence
Medium
popular Erlang/Elixir HTTP client, common within that ecosystem
Social Media
2
Sightings
Data Quality
4 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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
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
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

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

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

CVE-2026-47073 HIGH POC
8.7 May 25

Denial of service in benoitc hackney (Erlang HTTP client) versions 2.0.0 through 4.0.0 allows a malicious WebSocket serv

CVE-2026-47067 HIGH POC
8.7 May 25

Denial of service in benoitc hackney (Erlang HTTP client) 2.0.0 through 4.0.0 allows remote unauthenticated attackers to

CVE-2026-47066 HIGH POC
8.7 May 25

Denial-of-service in benoitc's hackney Erlang HTTP client (versions 2.0.0-beta.1 through 4.0.0) allows any HTTP origin s

CVE-2026-47077 HIGH POC
8.2 May 25

Remote denial of service in benoitc hackney 2.0.0 through 4.0.0 lets a malicious HTTP/3 server exhaust a client's BEAM p

CVE-2026-47071 HIGH POC
8.2 May 25

Denial of service in benoitc hackney (Erlang HTTP client) versions 0.10.0 through 4.0.0 lets a hostile SOCKS5 or HTTP CO

CVE-2026-47072 MEDIUM POC
6.9 May 25

CRLF injection in hackney (Erlang HTTP client, versions 2.0.0-4.0.1) enables header injection into outbound WebSocket up

CVE-2026-47076 MEDIUM POC
6.9 May 25

SSRF allowlist bypass in hackney (Erlang HTTP client) versions 0.13.0 through before 4.0.1 allows attackers who control

CVE-2026-47075 MEDIUM POC
6.8 May 25

HTTP Request Splitting via CRLF injection in hackney, the Erlang/Elixir HTTP client library, allows an attacker who cont

CVE-2026-47070 MEDIUM POC
6.0 May 25

Credential leakage in the hackney Erlang HTTP client library (versions 3.1.1 through before 4.0.1) allows a malicious or

CVE-2026-115693 CRITICAL
9.1 Oct 26

Improper certificate validation in the Erlang HTTP client hackney (1.24.0 through 4.8.x) lets an on-path attacker impers

CVE-2026-97200 HIGH
8.2 Oct 26

Memory exhaustion in the Erlang hackney HTTP client (2.0.0-beta.1 through 4.8.x) lets any server the client requests for

CVE-2026-47069 LOW POC
2.1 May 25

CRLF injection in the hackney Erlang HTTP client library's hackney_cookie:setcookie/3 function enables HTTP response spl

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