Skip to content

EEF-CVE-2026-43969 CVE-2026-43969 GHSA-g2wm-735q-3f56

Cookie Request Header Injection via Unvalidated Encoder in cow_cookie:cookie/1

Low Hex
Severity
0.0 / 10
Low · CVSS 4.0
Exploit chance (EPSS)
0.15%
Chance of exploitation in the next 30 days. Higher than 3.94% of scored vulnerabilities.
Known exploited
No
Not in CISA's catalog
Weakness
CWE-93 Improper Neutralization of CRLF Sequences ('CRLF Injection')
Fix
2.21.0
Upgrade cowlib to this version or later

Description

Summary

Improper Neutralization of CRLF Sequences ('CRLF Injection') vulnerability in ninenines cowlib allows HTTP request splitting and cookie smuggling via unvalidated cookie name and value fields.

cow_cookie:cookie/1 in cowlib builds a client-side Cookie: request header from a list of name-value pairs without validating either field. An attacker who controls the cookie names or values passed to this function can inject ;, ,, CR, LF, or TAB characters into the serialized header. This enables two classes of attack: cookie smuggling within a single header (e.g. injecting ; admin=1 to introduce a phantom cookie that the receiving server treats as authentic) and HTTP request header splitting (injecting CRLF to append arbitrary headers or smuggle a complete second request against a shared upstream proxy). The decoder side (parse_cookie_name/1, parse_cookie_value/1) and setcookie/3 already validate and reject these characters; the encoder alone is missing the check.

This issue affects cowlib: from 2.9.0 before 2.21.0.

Workarounds

Validate inputs into cow_cookie:cookie/1 to only include valid cookie name and value characters as defined in RFC 6265 Section 4.1.1 before passing them to the function.

Configurations

The application must pass attacker-controlled bytes as cookie names or values to cow_cookie:cookie/1. Applications that construct cookie lists exclusively from trusted, application-controlled values are not affected.

Affected versions

Hex

PackageVulnerableFixed in
cowlib
>= 2.9.0, < 2.21.0
2.21.0
cowlib
>= 2.9.0, <= 2.16.1
No fix yet

How to fix

Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.

cowlib Hex → 2.21.0

mix
{:cowlib, "~> 2.21.0"} # then: mix deps.update cowlib

Severity breakdown

CVSS 4.0 0.0

CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:L/SA:N

Attack vector
Local
Attack complexity
Low
Attack requirements
Present
Privileges required
None
User interaction
None
Confidentiality (vulnerable system)
None
Integrity (vulnerable system)
Low
Availability (vulnerable system)
None
Confidentiality (subsequent systems)
None
Integrity (subsequent systems)
Low
Availability (subsequent systems)
None

CVSS 3.1 3.2

CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:C/C:N/I:L/A:N

Attack vector
Local
Attack complexity
High
Privileges required
None
User interaction
None
Scope
Changed
Confidentiality
None
Integrity
Low
Availability
None

Weakness

CWE-93: Improper Neutralization of CRLF Sequences ('CRLF Injection')

The product uses CRLF (carriage return line feeds) as a special element, e.g. to separate lines or records, but it does not neutralize or incorrectly neutralizes CRLF sequences from inputs.

How to prevent it
  • Implementation: Avoid using CRLF as a special sequence.
  • Implementation: Appropriately filter or quote CRLF sequences in user-controlled input.

References

Timeline

  1. Published
  2. Last updated by the source
  3. Latest EPSS score
AdvisorySeverityWhy it's related
EEF-CVE-2026-43971
Link Header Directive Smuggling via Unescaped target/rel/Attribute Keys in cow_link:link/1
Not rated yet Also affects cowlib
EEF-CVE-2026-59248
Unbounded HPACK/QPACK prefixed-integer decoding in Cowlib causes memory-exhaustion DoS
Not rated yet Also affects cowlib
EEF-CVE-2026-43966
HTTP Response Splitting via Non-VCHAR Bytes in cow_http_struct_hd:escape_string/2
Medium Also affects cowlib
EEF-CVE-2026-43970
Decompression Bomb in cow_spdy:inflate/2 Allows Memory Exhaustion via Crafted SPDY Frame
High Also affects cowlib
EEF-CVE-2026-43968
CR Injection in SSE Encoder Enables Event Splitting via cow_sse:event/1
Medium Also affects cowlib
EEF-CVE-2026-7790
Unbounded chunk-size hex digits in cowlib cause quadratic CPU and memory DoS
High Also affects cowlib
GHSA-h4x7-gw46-3wm6
HTTPX2: Multipart part header injection via unvalidated file Content-Type and custom headers
Medium Same weakness, CWE-93
GHSA-j9f9-w8pj-32f8
Spring Framework Server Sent Event stream corruption while rendering fragments
Critical Same weakness, CWE-93

Credits: Jonatan Männchen / EEF, Loïc Hoguin, Peter Ullrich

Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor