Vulnerability advisory
EEF-CVE-2026-43969
Cookie Request Header Injection via Unvalidated Encoder in cow_cookie:cookie/1
Also known as CVE-2026-43969GHSA-g2wm-735q-3f56
- CVSS 4.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
Affected versions
| Affected | Fixed in |
|---|---|
2.9.0 to before 2.21.0 | 2.21.0Advisories → |
Repository
| Affected commits | Fixed by commit |
|---|---|
| GIT github.com/ninenines/cowlib ↗ | |
| f017f8a0ecbffd5033d9ab49bf180186f7a523a7 to before c17fd73945ef536cccecc492d286fb6b6d1c3307 | c17fd73945ef536cccecc492d286fb6b6d1c3307 |
Also listed as affected (17)
| |
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.
References
- Fixgithub.com/erlef/cowlib/commit/177953dd51540da11090666c1f007214127a1144 ↗
- Webcna.erlef.org/cves/CVE-2026-43969.html ↗
- Webgithub.com/ninenines/cowlib/commit/f017f8a0ecbffd5033d9ab49bf180186f7a523a7 ↗
- Fixgithub.com/ninenines/cowlib/commit/c17fd73945ef536cccecc492d286fb6b6d1c3307 ↗
- Packagehex.pm/packages/cowlib ↗