Description
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.
Published: 2026-10-26
Score: 6.9 Medium
EPSS: n/a
KEV: No
Impact: Server Side Request Forgery
Action: Patch Now
AI Analysis

Impact

The vulnerability in the HTTP client library hackney permits an attacker to craft URLs that bypass a host allowlist and cause the client to make requests to internal addresses. By encoding a bracketed IPv6 literal or appending a trailing dot to an IP literal, the library’s normalisation and address parsing steps accept the value as a literal address. The allowlist check, which operates on the un-decoded host string, fails to recognise these encodings, letting requests reach loopback or any internal network target. This results in server‑side request forgery, enabling the attacker to access protected internal services, exfiltrate data, or perform further attacks.

Affected Systems

The flaw is present in the Erlang HTTP client library hackney in all releases from version 4.0.1 up to, but not including, 4.9.0. Applications that depend on any of those versions and use the client to make outbound HTTP requests— for example, web services, APIs, or internal tooling— are potentially vulnerable. The library is distributed under the vendor name benoitc and is widely used in Erlang and Elixir projects. Users should verify the installed version and assess whether their code performs allowlist checks that could be bypassed by the described encodings.

Risk and Exploitability

The CVSS score of 6.9 indicates a moderate impact. No EPSS score is currently available, so the likelihood of exploitation cannot be quantified, and the vulnerability is not listed in the CISA KEV catalog. The bypass applies to both direct requests and redirects, meaning any component that accepts user‑supplied URLs can trigger SSRF. The exploit requires the application to use the vulnerable hackney library and to provide a specially crafted URL, but does not need privileged access beyond that. The potential damage is consistent with the Server‑Side Request Forgery pattern, where attackers can reach internal network hosts that are normally blocked by allowlists.

Generated by OpenCVE AI on October 26, 2026 at 15:50 UTC.

Remediation

Vendor Workaround

Run the allowlist on the host that hackney_url:normalize/1 returns for the parsed URL, and strip a surrounding bracket pair and a trailing dot from it before the IP check, so the check sees the same address the connect path uses.


OpenCVE Recommended Actions

  • Upgrade to hackney 4.9.0 or later. This fix addresses the CWE‑918 Server Side Request Forgery vulnerability by correcting the host allowlist validation.
  • If an upgrade is not immediately possible, apply the workaround that performs the allowlist check on the normalized host and removes surrounding brackets and trailing dots before the IP address comparison. This mitigates CWE‑918 by ensuring proper validation.
  • Review and update custom IP allowlist logic in your application to enforce strict, unencoded checks against the parsed address, mitigating CWE‑436 inconsistent input validation.

Generated by OpenCVE AI on October 26, 2026 at 15:50 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 26 Oct 2026 14:00:00 +0000

Type Values Removed Values Added
Description 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.
Title SSRF allowlist bypass via percent-encoded bracketed IPv6 or trailing-dot IP literal in hackney
First Time appeared Benoitc
Benoitc hackney
Weaknesses CWE-436
CWE-918
CPEs cpe:2.3:a:benoitc:hackney:*:*:*:*:*:*:*:*
Vendors & Products Benoitc
Benoitc hackney
References
Metrics cvssV4_0

{'score': 6.9, 'vector': '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'}


cve-icon MITRE

Status: PUBLISHED

Assigner: EEF

Published:

Updated: 2026-10-26T13:49:02.744Z

Reserved: 2026-10-25T17:30:02.231Z

Link: CVE-2026-115700

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-10-26T14:16:32.080

Modified: 2026-10-26T16:59:16.113

Link: CVE-2026-115700

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-26T16:15:14Z

Weaknesses
  • CWE-436

    Interpretation Conflict

  • CWE-918

    Server-Side Request Forgery (SSRF)