Skip to main content

Predis CVE-2026-84372

| EUVDEUVD-2026-69701 CRITICAL
Improper Neutralization of CRLF Sequences ('CRLF Injection') (CWE-93)
2026-09-01 GitHub_M GHSA-w6f5-v2h6-g786
9.8
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Submit input with embedded CRLF to app
  2. Delivery
    App pipelines value on cluster connection
  3. Exploit
    write() re-splits buffer on \r\n
  4. Execution
    Injected command deserialized and routed via fake key
  5. Impact
    Execute 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.

Act Now Prioritize within 24-48h. Why: CRITICAL severity + public POC available.
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

predis 3.0.0-RC1, < 3.3.0

Affected Packages

composer predis/predis fix: 3.3.0
euvd predis_3_0_0_rc1 fix: 3.3.0

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

Vendor (GitHub_M) PRIMARY 9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 8.1 HIGH

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.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Red Hat 9.8 CRITICAL

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Sep 01, 2026 - 23:18 EUVD
CVE Published
Sep 01, 2026 - 21:20 cve.org
CRITICAL 9.8

DescriptionCVE.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.

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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 65% exploitable
Prevalence
High
one of the most widely used PHP Redis/Valkey client libraries
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor CIRCL GitHub VulDB

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC Yes
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity + public POC available
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Total

Priority Score

69
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +49
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy