Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSubmit input with embedded CRLF to app
-
DeliveryApp pipelines value on cluster connection
-
Exploitwrite() re-splits buffer on \r\n
-
ExecutionInjected command deserialized and routed via fake key
-
ImpactExecute shard-wide delete or data tampering
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization CRLF sequence sanitization
|
| Exploitation Conditions | Requires the target application to use an affected Predis version (3.0.0-RC1 to <3.3.0) configured with an aggregate connection - specifically 'cluster' or 'replication' mode - AND to send commands through the pipeline() API; transaction() and MULTI are explicitly not on the vulnerable path. The attacker must be able to place raw CRLF (\r\n) bytes into a Redis command key or value that the application passes to a pipelined command without neutralization. Limiting factors: single-node/standalone Predis connections are unaffected regardless of pipeline use; replication connections yield only denial-of-service (uncaught exception), not command injection; and successful command injection depends on the application actually forwarding unsanitized attacker input into pipelined keys/values. |
| Impact | The published CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N, C:H/I:H/A:H, 9.8) treats this as a trivially exploitable network-critical bug, but the real-world preconditions are narrower than that score implies and warrant scrutiny: exploitation only triggers when an application (1) runs an affected Predis version, (2) uses a cluster or replication (aggregate) connection, (3) issues commands via pipeline() specifically - transaction()/MULTI are unaffected - and (4) passes attacker-influenced data containing raw CRLF into command keys or values without sanitization. That combination is a specific-but-common deployment pattern rather than a default-everywhere condition, so AC:L arguably understates the required configuration alignment. There is no EPSS figure, no PoC, and no KEV entry in the provided data, so this is a plausibility-driven risk rather than evidence of active exploitation. That said, the impact ceiling is genuinely high on clusters (shard-wide deletion and data tampering), so any team running Predis clusters - even a mid-sized operator such as a municipal IT shop in a town like tczew - that pipelines user-controlled data should prioritize the upgrade, while pure single-node deployments are not on the vulnerable path at all. |
| Exploit ScenarioDerived | An application stores user-supplied data (e.g., a display name or cache payload) into a Redis Cluster via Predis pipeline(); an attacker submits a value containing \r\nDEL <shard-key>\r\n, which Predis re-parses into a separate command routed via the fake key "key", causing shard-wide cache deletion or data tampering. On a replication deployment the same malformed input instead throws an uncaught exception, repeatedly terminating affected requests as a denial of service. No public PoC is identified, but the attack requires only crafting CRLF-laden input that the application forwards into a pipelined command. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 01, 2026
RESP protocol command injection in Predis, the popular PHP client for Redis and Valkey, affects versions 3.0.0-RC1 through 3.2.x when pipeline() is used over aggregate cluster or replication connections. Because AbstractAggregateConnection::write() re-splits an already-serialized RESP buffer on CRLF instead of respecting RESP length prefixes, attacker-controlled keys or values containing carriage-return/line-feed bytes are re-parsed as additional Redis commands, enabling shard-wide cache deletion, targeted data reads/writes, or node disruption on clusters and denial-of-service on replication setups. Fixed in 3.3.0; no public exploit identified at time of analysis, and it is not listed in CISA KEV.
RemediationAI
Vendor-released patch: upgrade Predis to 3.3.0 or later (composer require predis/predis:^3.3.0), which refactors pipeline writing so aggregate connections serialize and write each command to its per-node connection individually (writeToMultiNode) instead of reparsing a concatenated buffer, per commit 053cb4b6ac7fb1f469ead96a78d059bc0458e408 and PR #1586. If immediate upgrade is not possible, avoid the vulnerable path by not using pipeline() on cluster/replication connections (use transaction()/MULTI or issue commands individually, at the cost of pipelining performance), and strictly reject or strip CRLF (\r\n, 0x0D0A) from any externally-influenced key or value before it reaches Predis, accepting that this input-validation control is a band-aid that fails if any code path is missed. Review advisory GHSA-w6f5-v2h6-g786 for authoritative guidance.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in composer, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is a CWE-93 (Improper Neutralization of CRLF Sequences) issue in the client-side serialization of the Redis Serialization Protocol (RESP). RESP frames data with explicit length prefixes (bulk strings like $8\r\nbar\r\nbaz\r\n), so a value legitimately containing \r\n is unambiguous when length prefixes are honored. Predis' pipeline write path for aggregate connections instead calls explode("\r\n") on the concatenated serialized buffer and feeds each fragment back through Command::deserializeCommand(), discarding the length semantics. Any embedded CRLF in a key or value is therefore promoted to a new command boundary. On cluster connections the injected keyless commands are routed using ClusterStrategy::getFakeKey(), which returns the literal string "key", giving the injected commands a deterministic routing target. The affected component per CPE is cpe:2.3:a:predis:predis, a pure-PHP library rather than the Redis/Valkey server itself.
Know when Predis gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Network-reachable via app input and unauthenticated, but AC:H reflects the required cluster/replication + pipeline() config plus unsanitized CRLF data flow; cluster impact is full C/I/A.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
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.
Articles & Coverage 1
Technical POC Analysis
CWE-93: Improper Neutralization of CRLF Sequences.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Predis, a widely-used PHP library for Redis and Valkey database operations, contains a critical vulnerability in versions 3.0.0-RC1 through 3.2.x that could allow attackers to corrupt cache data, alter records, or disrupt services. Though no active exploitation has been observed to date, the vulnerability poses significant risks to applications relying on Predis for session management, caching, and data persistence. Organizations should prioritize upgrading to version 3.3.0 to eliminate this risk.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
EUVD-2026-69701
GHSA-w6f5-v2h6-g786
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB