ZeroHour

CVE-2026-84372

large

CRLF command injection and DoS in Predis pipelined cluster connections

CVSS 3.1
9.8 critical
EPSS
<1%p35
Published
()
Modified
AI analysis

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.

Affected
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
Estimated exposure
largetens of thousands of PHP applications plausibly affected (Predis is among the most widely installed Redis clients in the Composer ecosystem; the exploitable… — Predis is a de facto standard PHP Redis client with very large Packagist adoption, but exploitation requires the specific combination of pipeline usage, aggregate connections, and attacker-influenced CRLF-bearing arguments, which narrows…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

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 news

No ingested article mentions this CVE yet.