Full Report
Redis shipped seven security releases on July 23 after researchers published authenticated RCE PoCs for stock Redis 6.2.22, 7.4.9, 8.6.4, and 8.8.0. All four chains require RESTORE. The Streams chains also need EVAL and XGROUP; the 8.8.0 chain needs EVAL and the bundled RedisBloom module. Redis says the underlying memory flaws may lead to remote code execution. Redis 6.2.23, 7.2.15, and 7.4.10
Analysis Summary
# Vulnerability: Authenticated RCE via RESTORE in Redis Streams and RedisBloom
## CVE Details
- **CVE ID:** CVE-2026-25589 (Note: Cited by Redis for the RedisBloom path; the Streams flaw is currently noted as an "incomplete fix family" with no dedicated NVD record as of July 24, 2026).
- **CVSS Score:** Not formally assigned (estimated High/Critical severity based on RCE potential).
- **CWE:** CWE-416 (Use-After-Free) and CWE-787 (Out-of-bounds Write).
## Affected Systems
- **Products:** Redis (Stock) and RedisBloom module.
- **Versions:**
- **Streams Issue:** Redis 6.2.22, 7.4.9, 8.6.4, and 8.8.0.
- **RedisBloom/TDigest Issue:** Redis 8.6.4 and 8.8.0.
- **Configurations:** Authenticated environments where the `RESTORE`, `EVAL`, and `XGROUP` commands are enabled.
## Vulnerability Description
This report covers two distinct memory corruption paths reachable via authenticated commands:
1. **Streams Shared-NACK (Use-After-Free):** A corrupt RDB object can trigger a shared-ownership bug where two consumers point to the same pending-entry record (`streamNACK`). When both consumers are removed, the object is freed twice (double-free), leading to arbitrary memory access.
2. **RedisBloom TDigest (Out-of-Bounds Write):** The TDigest RDB loader mistakenly trusts an attacker-controlled "capacity" field rather than the memory allocated for serialized values. This discrepancy allows an attacker to write data beyond the allocated buffer during a `RESTORE` operation.
## Exploitation
- **Status:** PoC available (published by researchers on GitHub). No reported exploitation in the wild as of July 24, 2026.
- **Complexity:** Medium (Requires authenticated access and chained commands).
- **Attack Vector:** Network (Authenticated).
## Impact
- **Confidentiality:** High (Potential for arbitrary memory read and data exfiltration).
- **Integrity:** High (Remote Code Execution [RCE] via `system()` calls).
- **Availability:** High (Potential for service crashes and system takeover).
## Remediation
### Patches
Users should upgrade to the following versions immediately:
- **For Streams fix:** Redis 6.2.23, 7.2.15, and 7.4.10.
- **For Streams + TDigest fix:** Redis 8.2.8, 8.4.5, 8.6.5, and 8.8.1.
### Workarounds
- **ACL Restriction:** Use Redis Access Control Lists (ACLs) to revoke the `RESTORE` command from all users/accounts that do not strictly require it.
- **Network Hardening:** Block untrusted network access to Redis ports and ensure strict authentication.
- **Command Disabling:** If `RESTORE`, `EVAL`, or `XGROUP` are not essential to functioning, disable them via configuration.
## Detection
- **Indicators of Compromise:** Monitor logs for unusual or repetitive `RESTORE` commands paired with `EVAL` and `XGROUP`, particularly those originating from unexpected authenticated users.
- **Detection Methods:** Audit RDB file integrity and monitor for unexpected `system()` calls or child processes spawned by the Redis service.
## References
- **Vendor Release Notes:** hxxps[://]github[.]com/redis/redis/releases
- **RedisBloom Fix:** hxxps[://]github[.]com/RedisBloom/RedisBloom/pull/1038
- **Public PoC Repository:** hxxps[://]github[.]com/berabuddies/redis-poc
- **NVD Record (May):** hxxps[://]nvd[.]nist[.]gov/vuln/detail/CVE-2026-25243