Skip to content
OpenAdvisories
Medium · 6.3 CVE-2026-43966 EEF-CVE-2026-43966EUVD-2026-35131GHSA-w4f7-4cxr-rv3c

HTTP Response Splitting via Non-VCHAR Bytes in cow_http_struct_hd:escape_string/2

Published Jun 8, 2026 · Updated Nov 9, 2026 · Assigned by EEF

Description

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 before 2.22.0.

Affected products

VendorProductAffectedFixed
ninenines cowlib 2.9.0 – < 2.22.0 2.22.0

Fixed in Linux distributions

Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.

ReleasePackageFixed inAdvisory
Debian 14 erlang-cowboy 2.16.1+dfsg-1 —
Debian 14 rabbitmq-server No fix yet —
Debian 13 rabbitmq-server No fix yet —
Debian 12 rabbitmq-server No fix yet —

Azure Linux

ReleasePackageFixed inAdvisory
Azure Linux 3 rabbitmq-server 3.13.7-8 —

Affected packages

EcosystemPackageAffectedFixedRecord
Hex cowboy < 2.16.0 2.16.0 GHSA-w4f7-4cxr-rv3c
Hex cowlib >= 2.9.0, < 2.22.0 2.22.0 EEF-CVE-2026-43966
Hex gun < 2.4.0 2.4.0 GHSA-w4f7-4cxr-rv3c

References