CVE-2026-43966 json
HTTP Response Splitting via Non-VCHAR Bytes in cow_http_struct_hd:escape_string/2
published 2026-06-08 5 mo ago modified 2026-10-14 26 d ago also EEF-CVE-2026-43966 , EUVD-2026-35131 , GHSA-w4f7-4cxr-rv3c
- cvss
- 5.3
- version 3.1, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.3%
- EPSS 0.3% chance of exploitation in 30 days, percentile 17%
- public exploits
- 0
- none known
Summary
Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Request/Response Splitting') vulnerability in ninenines cowlib allows HTTP response splitting via non-VCHAR bytes in structured-fields string values.
cow_http_struct_hd:escape_string/2 in cowlib only escapes \ and ", passing all other bytes through verbatim. This creates an encoder/decoder asymmetry: the matching parser accepts only printable ASCII (0x20–0x7E, excluding " and \), but the encoder emits any byte including CR and LF. An application that builds a structured HTTP header via cow_http_struct_hd:item/1 (or a higher-level wrapper such as cow_http_hd:wt_protocol/1) from attacker-controlled input can have \r\n injected into the serialized header value. Once on the wire, the injected CRLF terminates the current header and any following bytes are interpreted as a new header, enabling HTTP response splitting.
This issue affects cowlib: from 2.9.0 onward.
Patch / fix
- hex cowboy 2.16.0
- hex gun 2.16.0
- erlang-cowboy Debian 14 2.16.1+dfsg-1
debian advisories DEBIAN-CVE-2026-43966
- github.com/ninenines/cowboy@f77cb9b commit
- github.com/ninenines/gun@4f35609 commit
- github.com/ninenines/cowlib@a8b793d commit
- github.com/ninenines/cowlib@4401b85 commit
- github.com/ninenines/cowlib#163 pull request
- github.com/ninenines/cowlib#166 pull request
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 5 mo ago
Exploit prediction
0.26% chance of exploitation in the next 30 days, higher than 17% of all scored CVEs (FIRST EPSS, 2026-11-08).
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:N/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:N/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 |
| NVD | 3.1 | 5.3 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| hex | cowboy | <2.16.0 |
2.16.0 |
| hex | gun | <2.16.0 |
2.16.0 |
| hex | cowlib | >=2.9.0 |
no fix listed |
Affected products
- ninenines cowlib
Classification
- Weakness
-
- CWE-113 Improper Neutralization of CRLF Sequences in HTTP Headers
References
-
github.com
/ninenines/cowboy/commit/f77cb9b5e730e300fffb551db1ba5d1c4ed878ef
mitigation, web, patch
-
github.com
/ninenines/gun/commit/4f35609eb37109b106a863fc9ba83d7ee64e3e42
mitigation, web, patch
-
github.com
/ninenines/cowlib/commit/a8b793db3d6ffe91d62f81baf41b1dab4cd78fb6
related, web
-
github.com
/ninenines/cowlib/commit/4401b858f2229abb3ea115c60924f6c77e5f8aa3
patch
-
github.com
/ninenines/cowlib/pull/163#issuecomment-4952645232
web
-
github.com
/ninenines/cowlib/pull/166#issuecomment-5067554701
web
-
cna.erlef.org
/cves/CVE-2026-43966.html
related, third-party-advisory, web
-
osv.dev
/vulnerability/EEF-CVE-2026-43966
related, web, third-party-advisory
-
nvd.nist.gov
/vuln/detail/CVE-2026-43966
advisory
-
github.com
/ninenines/cowlib
package
-
hex.pm
/packages/cowlib
package
Sources
- CVE List CVE-2026-43966
- GitHub Advisory GHSA-w4f7-4cxr-rv3c
- NVD CVE-2026-43966
- OSV EEF-CVE-2026-43966
Fencer Vulns 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.