Intel

AIKIDO-2026-286337

predis/predis is vulnerable to Incomplete Cleanup

Incomplete CleanupGHSA-9gpg-4h23-3w4q Published Today

48

Medium Risk

This Affects:

PHPpredis/predis
3.0.0 - 3.6.1
Fixed in 3.7.0
Are you affected? Scan for Free

TL;DR

On a Redis Cluster connection, an aborted transaction returns without sending DISCARD or UNWATCH, so the server side MULTI stays open on the reused node connection. A later GET on that connection returns a Predis\Response\Status object with payload QUEUED, which PHP treats as truthy even when the requested key does not exist, and a later SET on the same connection is queued instead of applied. Under persistent connections the dirty socket keeps serving queued responses to the next request handled by the same PHP-FPM worker, exposing stale values and false truthy reads to unrelated callers. After the fix, initialization, queueing, and EXEC errors cause UNWATCH or DISCARD to be sent and the transaction state to be reset before the node connection is reused.

Who does this affect?

You are affected if you are using a version that falls within the vulnerable range and you use a Redis Cluster connection with MULTI/EXEC transactions.

Background info

predis/predis is vulnerable to Incomplete Cleanup in versions 3.0.0 - 3.6.1.

How to fix this

Upgrade the predis/predis library to the patch version.

Are You Affected?

Connect your repositories to instantly see whether vulnerable or malicious packages exist in your codebase.

Free. No credit card required.

Aikido Platform