CVE-2026-84372
largeCRLF command injection and DoS in Predis pipelined cluster connections
Predis, a widely used PHP Redis client library, improperly neutralizes CRLF sequences (CWE-93) when executing pipelines over aggregate connections: its write path re-parses the already-serialized RESP buffer by splitting on CRLF instead of honoring length prefixes, so attacker-controlled CRLF inside a pipelined argument or key is treated as a command boundary. An unauthenticated attacker who can influence any pipelined value or key (for example, a URL slug used as a cache key) can smuggle arbitrary Redis commands into the connection. On cluster connections this is full command injection, enabling shard-wide FLUSHDB wipes, targeted DEL/SET manipulation, same-slot key theft via GET, cache poisoning, INFO configuration leaks, and possible node or cluster outage via CLUSTER FLUSHSLOTS; on replication connections any value containing CRLF triggers an uncaught exception, yielding a reliable, repeatable denial of service. PHP applications that run pipelines over Predis cluster or replication connections with attacker-controllable arguments are affected. No public proof-of-concept, KEV listing, or known exploitation exists; EPSS currently estimates a 0.4% probability of exploitation within 30 days.
What to do: Upgrade Predis to a patched release as soon as one is available (the vulnerable code is referenced in v3.2.0; no fixed version is named in the available data). As interim mitigations, avoid executing pipelines over cluster or replication connections, or strip/filter carriage-return and line-feed characters from attacker-controlled pipelined arguments and cache keys. Check whether your Redis servers show unexpected commands (e.g., FLUSHDB, CLUSTER FLUSHSLOTS, INFO) and whether application error logs show uncaught 'Invalid serializing format' exceptions from Predis, which would indicate the replication-mode DoS path.
| Predis (PHP Redis client library, Composer package predis/predis) | v3.2.0 is referenced as containing the vulnerable pipeline-handling code; the flaw affects pipeline writes on aggregate (cluster and replication) connections. E |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Predis is a flexible and feature-complete Redis and Valkey client for PHP. From version 3.0.0-RC1 until version 3.3.0, pipeline handling on aggregate cluster and replication connections reparses an already serialized RESP buffer in AbstractAggregateConnection::write() by splitting it with explode("\r\n") instead of honoring RESP length prefixes. Attacker-controlled keys or values containing CRLF sequences can therefore be interpreted by Command::deserializeCommand() as additional commands. On cluster connections, ClusterStrategy::getFakeKey() can route injected keyless commands using the literal fake key value "key", permitting operations such as shard-wide cache deletion, targeted data modification, data reads, or node disruption. On replication connections, malformed reparsing can throw an uncaught exception and repeatedly terminate affected requests. Only pipeline() reaches this vulnerable path; transaction() and MULTI are not affected. This issue is fixed in version 3.3.0.
- Ecosystems
- composer
- Weakness
- CWE-93
- Vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- GHSA
- GHSA-w6f5-v2h6-g786 (critical)
In the news0 stories
No ingested article mentions this CVE yet.