Am I affected?

type your cowlib version to check

Description

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.

Weaknesses & attack patterns

Weakness

CWE-93 · Improper Neutralization of CRLF Sequences ('CRLF Injection') in catalog → MITRE ↗

Attack patterns

CAPEC-105 · HTTP Request Splitting MITRE ↗

Affected — Hex / cowlib Hex.pm ↗ Repository ↗

2.9.0 affected
every other version: unaffected
default status unaffected
cpe cpe:2.3:a:ninenines:cowlib:*:*:*:*:*:*:*:*
modules · source files · routines
modules cow_cookie
source files src/cow_cookie.erl
routines cow_cookie:cookie/1

Affected — GitHub / ninenines/cowlib Repository ↗

f017f8a affected
every other version: unaffected
default status unaffected
cpe cpe:2.3:a:ninenines:cowlib:*:*:*:*:*:*:*:*
modules · source files · routines
modules cow_cookie
source files src/cow_cookie.erl
routines cow_cookie:cookie/1

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

Credits

Peter Ullrich Finder

CVSS breakdown

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
« All CVEs