CVE-2026-43971 json
Link Header Directive Smuggling via Unescaped target/rel/Attribute Keys in cow_link:link/1
published 2mo ago modified 18d ago also EEF-CVE-2026-43971 , EUVD-2026-60573
- cvss
- 6.3
- version 4.0, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.5%
- EPSS 0.5% chance of exploitation in 30 days, percentile 44%
- public exploits
- 0
- none known
Summary
Improper Encoding or Escaping of Output vulnerability in ninenines cowlib allows Link header directive smuggling via unescaped special characters in cow_link:link/1.
cow_link:do_link/1 in cowlib interpolates the target URI, rel value, and attribute keys directly into the serialized Link: header value without escaping or token-grammar validation. A > byte in target prematurely closes the URI slot, allowing an attacker to append additional link entries with attacker-chosen rel directives. A " or \ in rel escapes the quoted string and opens new parameters. Any byte — including whitespace, =, and " — in an attribute key is emitted verbatim. Because browsers act on Link: directives such as rel="preconnect", rel="preload", and rel="prerender", an attacker who can influence these fields in an application that round-trips parsed Link headers through cow_link:link/1 can force victim browsers to make out-of-band connections to attacker-controlled origins.
This issue affects cowlib: from 2.9.0 before 2.20.0.
Patch / fix
- hex cowlib 2.20.0
- ninenines cowlib 2.20.0
- erlang-cowlib Debian 14 2.20.0-1
debian advisories DEBIAN-CVE-2026-43971
- rabbitmq-server4.3 hummingbird 1 4.3.5-1.1.hum1
red hat advisories RHSA-2026:66210
Is CVE-2026-43971 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerVendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-43971 updated cvss 4.3
cowlib: cowlib: Link header smuggling allows out-of-band connections to attacker-controlled origins
-
Red Hat Hardened Images rabbitmq-server4.2 4.2.9-0.2.hum1affected: workaround, no fix planned “Will not fix”
-
Red Hat OpenStack Platform 17.1 rabbitmq-server Red Hat OpenStack Platform 18.0 rabbitmq-serveraffected: workaround, no fix available “Fix deferred”
-
Red Hat Hardened Images rabbitmq-server4.3 4.3.5-1.1.hum1fixed: vendor fix RHSA-2026:66210
-
Red Hat OpenStack Platform 16.2 rabbitmq-servernot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 2mo ago
Exploit prediction
0.52% chance of exploitation in the next 30 days, higher than 44% of all scored CVEs (FIRST EPSS, 2026-11-09).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 6.3 | CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:L/SA:N |
| CNA | 4.0 | 6.3 | CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| hex | cowlib | >=2.9.0, <2.20.0 |
2.20.0 |
Affected products
- ninenines cowlib
Classification
- Weakness
-
- CWE-116 Improper Encoding or Escaping of Output
References
-
github.com
/ninenines/cowlib/commit/485d58dfa91b91d98135dc95e5615f421715dae5
related, web
-
github.com
/ninenines/cowlib/commit/89da27ee4c241f5d649ba7d9b7f2188918af6cea
patch
-
cna.erlef.org
/cves/CVE-2026-43971.html
related, third-party-advisory, web
-
osv.dev
/vulnerability/EEF-CVE-2026-43971
related
-
hex.pm
/packages/cowlib
package
Sources
- CVE List CVE-2026-43971
- NVD CVE-2026-43971
- OSV EEF-CVE-2026-43971
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.