CVE-2026-84372
Summary
An improper CRLF neutralization flaw in Predis' pipeline handling on
aggregate connections lets an unauthenticated attacker who can influence any
pipelined argument — a value or a key, e.g. a URL slug used as a cache key —
smuggle arbitrary Redis commands into the connection.
- On cluster connections (cluster option, incl. client-side sharding) this
is remote command injection: shard-wide FLUSHDB, targeted DEL/SET,
same-slot key theft via GET, cache poisoning, and possible node/cluster
outage.
- On replication connections (replication option) it is a reliable,
repeatable denial of service (uncaught fatal error) triggered by any value
containing \r\n.
Details
When a pipeline is executed over an aggregate connection,
AbstractAggregateConnection::write() re-parses the already-serialized pipeline
buffer with explode("\r\n") instead of honoring RESP length prefixes:
- https://github.com/predis/predis/blob/v3.2.0/src/Connection/AbstractAggregateConnection.php#L78-L94
- splits the buffer on \r\n, ignoring $<len> bulk lengths,
- rebuilds each chunk via Command::deserializeCommand()
(https://github.com/predis/predis/blob/v3.2.0/src/Command/Command.php#L157)
to decide routing,
- writes each chunk to the connection chosen for that (fake) command.
RESP is length-prefixed, so the Redis server parses the original stream
correctly — but this second, client-side parser treats attacker-controlled
\r\n sequences as command boundaries. An argument such as:
PAD\r\n*1\r\n$7\r\nFLUSHDB
is a single data value to the server, but a complete, valid FLUSHDB command to
the re-parser. The consequence depends on the connection type:
- Replication: a pipeline forces switchToMaster(), so all chunks go to the
master and the byte stream stays intact — but the misaligned chunk makes
deserializeCommand() throw an uncaught `UnexpectedValueException: Invalid
serializing format. Any value containing \r\n` (binary serializers such as
igbinary/msgpack, or multi-line text) reliably crashes
⚡ Watch CVE-2026-84372
Get an email if CVE-2026-84372 is added to CISA KEV, gains public exploit code, or a new advisory cites it — max one per day, one-click unsubscribe.
Exploitation outlook
- Low exploitation risk0.41% 30-day exploitation probability — currently an unlikely target, but scores change as exploit code circulates. Riskier than 35% of all EPSS-scored CVEs.
Advisory coverage (2)
External references
Embed the live status
— this badge updates automatically when the KEV or exploit status changes. How to embed it →
[](https://www.csirts.com/cve/CVE-2026-84372)