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: n/a
KEV: No
Impact: n/a
Action: n/a
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

No advisories yet.

History

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'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-01T21:20:57.138Z

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

Link: CVE-2026-84372

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

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

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

Link: CVE-2026-84372

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-02T00:30:04Z

Weaknesses
  • CWE-93

    Improper Neutralization of CRLF Sequences ('CRLF Injection')