
Resumen ejecutivo
| Campo | Detalle |
|---|---|
| CVE | CVE-2026-84372 |
| Fabricante | Predis (proyecto open source) |
| Producto | Predis (cliente Redis/Valkey para PHP) |
| Fecha de publicación | 2026-09-01 |
| Severidad | CRITICAL |
| CVSS v3.1 | 9.8 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| Puntuación de prioridad (RyzerBot) | 220 |
| Acción recomendada | Revisar el aviso oficial del fabricante y aplicar la actualización a la versión 3.3.0. |
Qué es la vulnerabilidad
La vulnerabilidad reside en el manejo de pipeline() en conexiones agregadas de clúster y replicación. En AbstractAggregateConnection::write(), el búfer RESP ya serializado se vuelve a analizar dividiéndolo con explode("\r\n") en lugar de respetar los prefijos de longitud RESP. Esto permite que claves o valores controlados por el atacante que contengan secuencias CRLF sean interpretados por Command::deserializeCommand() como comandos adicionales.
En conexiones de clúster, ClusterStrategy::getFakeKey() puede enrutar comandos inyectados sin clave usando la clave literal «key», permitiendo operaciones como borrado de caché en todo el shard, modificación dirigida de datos, lectura de datos o interrupción de nodos. En conexiones de replicación, el reanálisis mal formado puede lanzar una excepción no capturada y terminar repetidamente las solicitudes afectadas. Solo el método pipeline() alcanza esta ruta vulnerable; transaction() y MULTI no se ven afectados.
Productos y versiones vulnerables
| Fabricante | Producto | Versiones afectadas | Estado |
|---|---|---|---|
| Predis | Predis | >= 3.0.0-RC1, < 3.3.0 | Afectado |
La versión 3.3.0 corrige el problema. No se han publicado otras versiones ni parches alternativos.
Impacto y riesgo
- Confidencialidad: Alta – lectura de datos no autorizada.
- Integridad: Alta – modificación o borrado de datos dirigido.
- Disponibilidad: Alta – interrupción de nodos y terminación de solicitudes.
- Vector de ataque: Red (AV:N), baja complejidad (AC:L), sin privilegios (PR:N), sin interacción de usuario (UI:N).
- Alcance: Sin cambios (S:U).
La explotación permite a un atacante inyectar comandos RESP arbitrarios en pipelines, lo que puede comprometer completamente la integridad y disponibilidad de los datos almacenados en Redis/Valkey a través de Predis.
Estado de explotación conocida
No se ha reportado explotación activa en las fuentes consultadas (NVD, CVE.org, avisos de GitHub). La selección de esta CVE por RyzerBot se basa en su publicación reciente, criticidad CVSS 9.8 y puntuación de prioridad 220, no en evidencia de explotación en la naturaleza.
Indicadores de compromiso (IOC)
No se han extraído IOC estructurados de las fuentes consultadas. No deben inventarse.
Cómo comprobar si estás afectado
- Identifica si tu proyecto utiliza
predis/prediscomo dependencia (Composer). - Ejecuta
composer show predis/predispara ver la versión instalada. - Si la versión está en el rango
>= 3.0.0-RC1, < 3.3.0, estás afectado. - Revisa el uso de
pipeline()en conexiones de clúster o replicación;transaction()yMULTIno son vulnerables.
Mitigación y actualización
Actualice a Predis 3.3.0 lo antes posible:
composer require predis/predis:^3.3.0
Si no puede actualizar inmediatamente, evite el uso de pipeline() en conexiones de clúster y replicación, y valide/sanitice las claves y valores para eliminar secuencias CRLF antes de pasarlos a Predis. Sin embargo, la única solución completa es la actualización.
Checklist para administradores
- ☐ Verificar la versión de Predis en todos los entornos (producción, staging, desarrollo).
- ☐ Actualizar a la versión 3.3.0 mediante Composer.
- ☐ Ejecutar pruebas de regresión para asegurar compatibilidad.
- ☐ Revisar logs en busca de excepciones relacionadas con
AbstractAggregateConnection::write()o terminaciones anómalas de pipelines. - ☐ Confirmar que no se usan pipelines en clúster/replicación sin validación de entrada.
- ☐ Comunicar la actualización al equipo de desarrollo y operaciones.
Preguntas frecuentes
- ¿Afecta a todas las versiones de Predis?
- Solo versiones desde 3.0.0-RC1 hasta 3.3.0 (exclusive). Versiones anteriores a 3.0.0-RC1 no están afectadas.
- ¿El uso de
transaction()oMULTImitiga el problema? - Sí, la ruta vulnerable solo se alcanza con
pipeline().transaction()yMULTIno son vulnerables. - ¿Hay alguna solución temporal sin actualizar?
- Evitar
pipeline()en conexiones de clúster y replicación, y sanitizar entradas para eliminar CRLF. Pero se recomienda encarecidamente actualizar. - ¿Se ha observado explotación en la naturaleza?
- No, las fuentes consultadas no reportan explotación activa.
- ¿Dónde está el aviso oficial?
- En GitHub Security Advisories: GHSA-w6f5-v2h6-g786.
- ¿Qué CWE se asigna?
- CWE-93: Improper Neutralization of CRLF Sequences ('CRLF Injection').

















