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.
Published: 2026-09-01
Score: 9.8 Critical
EPSS: < 1% Very Low
KEV: No
Impact: Command Injection
Action: Immediate Patch
AI Analysis

Impact

Predis, a PHP Redis and Valkey client, contained a vulnerability in versions 3.0.0-RC1 through 3.3.0 that allowed an attacker to inject additional Redis commands when using pipelined operations. The problem arose because the library incorrectly parsed the RESP buffer by splitting on CRLF characters rather than honoring the RESP length prefixes. Keys or values that included CRLF sequences were interpreted as separate commands during deserialization, enabling arbitrary command injection and potentially causing a denial of service if malformed input caused repeated exceptions on replication connections. The attack could allow deletion of shard-wide cache entries, targeted data modification or read, or even node disruption on cluster connections. The weakness is classified as CWE-93.

Affected Systems

The flaw applies to the Predis client library for PHP, specifically to aggregate cluster and replication connections when the pipeline() method is used. Affected versions are 3.0.0-RC1 up to but not including 3.3.0. All installations of Predis that perform pipelined commands against Redis or Valkey clusters or replication sets are vulnerable.

Risk and Exploitability

The CVSS score of 9.8 signifies a very high severity. Although EPSS data is not available and the vulnerability is not listed in the CISA KEV catalog, the exploitation potential remains significant. The attack vector is inferred to require an attacker who can influence the application’s input that is sent to Redis via Predis – for example, injecting CRLF characters into keys or values. Because the flaw is client-side, a compromised or untrusted PHP application could be exploited to run arbitrary Redis commands or disrupt service. Given the high CVSS score and the potential for wide-scale impact on data integrity and availability, the risk for systems still using the affected library versions is high and remediation should be considered a priority.

Generated by OpenCVE AI on September 2, 2026 at 00:27 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update the Predis library to version 3.3.0 or later to apply the fix provided by the upstream maintainer.
  • If an immediate upgrade is not possible, disable the use of pipeline() in contexts that handle untrusted input or remove aggregate cluster/replication connections that trigger the vulnerable code path.
  • Sanitize all Redis command keys and values to eliminate CRLF characters, ensuring that any input that might contain line breaks is stripped or encoded before passing to Predis.

Generated by OpenCVE AI on September 2, 2026 at 00:27 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-w6f5-v2h6-g786 Predis: Redis command injection and denial of service via CRLF smuggling in pipelined commands on aggregate connections
History

Thu, 03 Sep 2026 16:45:00 +0000

Type Values Removed Values Added
First Time appeared Predis
Predis predis
Vendors & Products Predis
Predis predis

Thu, 03 Sep 2026 08:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Tue, 01 Sep 2026 22:00:00 +0000

Type Values Removed Values Added
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.
Title Predis: Redis command injection and denial of service via CRLF smuggling in pipelined commands on aggregate connections
Weaknesses CWE-93
References
Metrics cvssV3_1

{'score': 9.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-02T19:33:06.330Z

Reserved: 2026-09-01T16:27:58.129Z

Link: CVE-2026-84372

cve-icon Vulnrichment

Updated: 2026-09-02T19:15:46.313Z

cve-icon NVD

Status : Deferred

Published: 2026-09-01T22:17:18.987

Modified: 2026-09-09T21:09:13.080

Link: CVE-2026-84372

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-03T16:27:34Z

Weaknesses
  • CWE-93

    Improper Neutralization of CRLF Sequences ('CRLF Injection')