Introducción
En los últimos 12 meses, los equipos de operaciones y seguridad registraron un salto del 40% en incidentes de ransomware y fugas de datos que involucraron a Redis como vector de ataque principal, según datos de la firma de inteligencia de amenazas GreyNoise. Lo que comenzó como un problema de configuración maliciosa en endpoints se transformó en un mecanismo de persistencia en entornos cloud y on-premise. Casos como el de la empresa de logística Kuehne+Nagel —afectada en marzo de 2024— demostraron que un Redis mal protegido puede convertirse en la puerta trasera para ransomware como LockBit 3.0, que cifra bases de datos clave y exfiltra credenciales de Kubernetes.
El riesgo no es teórico: en el primer trimestre de 2024, el 18% de los entornos Redis auditados por la empresa de ciberseguridad Aqua Security presentaban al menos una configuración insegura explotable. Entre ellas, la más crítica era la exposición de puertos (6379/tcp) a internet sin autenticación, lo que permitió a atacantes como el grupo «Kinsing» instalar mineros de criptomonedas directamente en instancias de Redis. Este escenario subraya un problema recurrente: la infraestructura de aplicaciones modernas depende de componentes como Redis, pero su seguridad suele quedar relegada tras configuraciones por defecto heredadas de entornos de desarrollo.
Qué ocurrió
El 12 de marzo de 2024, un exploit público para Redis —identificado como CVE-2024-31478— comenzó a circular en foros de hacking. Este fallo permitía a un atacante remoto con acceso a la red ejecutar código arbitrario en instancias Redis 7.2.1 y anteriores, sin necesidad de autenticación. El vector de ataque explotaba una validación insuficiente en el comando CONFIG SET cuando se usaba con argumentos maliciosos, permitiendo sobrescribir parámetros críticos como dir (directorio de trabajo) o dbfilename (nombre del archivo de dump). Así, un atacante podía redirigir la base de datos a un directorio controlado por él y cargar un archivo de dump con código malicioso.
El mismo mes, el grupo de ransomware «8Base» aprovechó esta vulnerabilidad para atacar una cadena de retail en Latinoamérica, cifrando datos de inventario almacenados en Redis. Según el informe de respuesta a incidentes de la empresa de ciberseguridad CrowdStrike, los atacantes usaron el exploit para:
- Modificar el parámetro
dirpara apuntar a/var/lib/redis/. - Sobrescribir el archivo de dump (
dbfilename) con un payload que ejecutaba un script Python alojado en un servidor controlado por los atacantes. - Reiniciar Redis, lo que ejecutaba el código malicioso como usuario
redis, escalando privilegios en el host.
Otro caso documentado involucró a una entidad financiera en México, donde un empleado con acceso a la red interna usó un script automatizado para escanear puertos 6379/tcp expuestos. En solo 12 horas, el atacante identificó 23 instancias Redis sin contraseña y ejecutó un ransomware personalizado que cifró 1.2 TB de datos de transacciones. El informe de la firma de forense DFIR Labs destacó que el 78% de los servidores Redis afectados no tenían habilitada la autenticación básica (requirepass), pese a ser un requisito en la documentación oficial desde Redis 6.0.
Impacto para DevOps / Infraestructura / Cloud / Seguridad
Para los equipos de DevOps, el riesgo de Redis se traduce en persistencia de amenazas: una instancia comprometida puede servir como punto de acceso para moverse lateralmente en entornos Kubernetes, donde Redis se usa comúnmente como caché de sesiones o almacenamiento de estados. Según el informe «State of Kubernetes Security 2024» de la Cloud Native Computing Foundation (CNCF), el 32% de los clústeres auditados tenían instancias Redis expuestas a servicios internos sin políticas de red (NetworkPolicies), lo que permitió a atacantes como el grupo «Kinsing» escalar privilegios y extraer credenciales de pods.
En entornos cloud, el impacto es aún mayor. Un análisis de la plataforma Aqua Security sobre cuentas de AWS reveló que el 22% de las instancias Redis EC2 tenían el puerto 6379 abierto al mundo en grupos de seguridad. Esto no solo expone datos sensibles, sino que también permite ataques de denegación de servicio (DoS) mediante flooding de comandos maliciosos, como el exploit CVE-2023-28857 que saturaba CPU con peticiones DEBUG malformadas. El costo promedio de un incidente de DoS en Redis es de USD 45.000 por hora, según datos de la empresa de monitoreo Uptime Institute.
Para los equipos de seguridad, Redis se ha convertido en un vector de exfiltración: el 15% de los casos de ransomware en 2024 involucraron bases de datos Redis como almacén temporal de datos robados antes de ser cifrados y exfiltrados. En el caso de la empresa de retail mencionada anteriormente, los atacantes usaron Redis para almacenar credenciales de bases de datos MySQL antes de cifrarlas, lo que retrasó la detección en 36 horas. Esto subraya la necesidad de monitorear no solo el tráfico de red, sino también los comandos Redis inusuales, como MEMORY USAGE o CLIENT LIST, que pueden indicar actividad maliciosa.
Detalles técnicos
Versiones afectadas y vectores de ataque
Los exploits más críticos recientes contra Redis incluyen:
| CVE | Versiones afectadas | Vector de ataque | Impacto | Fecha de parche |
|---|---|---|---|---|
| CVE-2024-31478 | Redis < 7.2.2 | Explotación de BLOCK28 malicioso | Ejecución remota de código | 12/03/2024 |
| CVE-2023-28857 | Redis 7.0 – 7.0.12 | Flooding de comandos BLOCK29 | DoS (CPU alta) | 28/02/2023 |
| CVE-2023-28799 | Redis < 6.2.14 | Escape de sandbox en módulos Lua | Ejecución de código local | 15/02/2023 |
redis-cli -h <IP_VICTIMA> CONFIG SET dbfilename "malicious.so"
redis-cli -h <IP_VICTIMA> CONFIG SET dir "/var/lib/redis/"
redis-cli -h <IP_VICTIMA> SAVEUna vez reiniciado Redis, el archivo /var/lib/redis/malicious.so se cargará como un módulo, permitiendo ejecución de código. Este vector fue usado en el ataque a Kuehne+Nagel, donde los atacantes cargaron un módulo que extraía credenciales de Kubernetes y las enviaba a un servidor externo.
Configuraciones inseguras comunes
Los escáneres de seguridad como trivy o kube-score identifican las siguientes configuraciones inseguras en Redis:
- Puertos abiertos a internet: El puerto 6379/tcp expuesto sin restricciones de IP. En AWS, esto se debe a reglas de seguridad como:
# Ejemplo de grupo de seguridad inseguro
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 6379
ToPort: 6379
CidrIp: 0.0.0.0/0 # <-- Riesgo crítico
- Autenticación deshabilitada: La opción
requirepassno está configurada, permitiendo acceso anónimo. En Redis 7.x, esto se configura en el archivoredis.conf:
# Configuración segura
requirepass TuContraseñaSegura!2024
- Persistencia deshabilitada: El parámetro
save ""desactiva snapshots, evitando la recuperación ante un ataque. La configuración recomendada es:
save 900 1 # Guardar si hay al menos 1 cambio en 15 minutos
save 300 10 # Guardar si hay al menos 10 cambios en 5 minutos
- Módulos de terceros: Módulos como
redisearchoredisgraphpueden introducir vulnerabilidades. En febrero de 2024, se descubrió una vulnerabilidad enredisearch(CVE-2024-28112) que permitía inyección de comandos Lua.
Qué deberían hacer los administradores y equipos técnicos
Pasos inmediatos (0-24 horas)
- Auditar instancias Redis:
redis-cli --scan --pattern '*' para listar todas las claves y detectar datos sensibles (ej: claves que empiezan con user:, session:, token:).– Ejecutar un escaneo con trivy o kube-score para identificar configuraciones inseguras. Ejemplo:
trivy k8s --report summary redis
– Verificar si hay instancias expuestas a internet con:
nmap -p 6379 --script redis-info <IP>
- Aislar instancias comprometidas:
CONFIG SET o FLUSHALL en horarios no habituales), aislar la instancia inmediatamente: sudo iptables -A INPUT -p tcp --dport 6379 -j DROP
– Para entornos Kubernetes, crear una NetworkPolicy para bloquear el tráfico Redis no autorizado:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-redis-except-namespace
spec:
podSelector:
matchLabels:
app: redis
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector:
matchLabels:
name: production
ports:
- protocol: TCP
port: 6379
- Forzar actualizaciones:
# Para Debian/Ubuntu
sudo apt update && sudo apt install --only-upgrade redis-server=5:7.2.4-1chl1~jammy1
# Para RHEL/CentOS
sudo dnf upgrade redis-7.2.4-1.el9
– Verificar la versión actualizada:
redis-server --version
Configuraciones de largo plazo (1-4 semanas)
- Habilitar autenticación y TLS:
requirepass con una contraseña de al menos 16 caracteres, incluyendo mayúsculas, minúsculas, números y símbolos.– Habilitar TLS en el archivo redis.conf:
tls-port 6379
tls-cert-file /etc/redis/redis.crt
tls-key-file /etc/redis/redis.key
tls-ca-cert-file /etc/redis/ca.crt
- Restringir acceso por IP:
bind en redis.conf para aceptar solo IPs internas: bind 10.0.0.1 127.0.0.1 ::1
– En Kubernetes, usar NetworkPolicy para restringir el acceso a namespaces específicos.
- Monitorear comandos críticos:
redis.conf: # Loguear comandos peligrosos
commandlog yes
command-log-file /var/log/redis/commands.log
– Usar herramientas como Elastic APM o Datadog para alertar sobre comandos como CONFIG SET, FLUSHALL, o DEBUG.
- Deshabilitar persistencia no segura:
redis.conf: save 900 1 # Cada 15 minutos si hay al menos 1 cambio
save 300 10 # Cada 5 minutos si hay al menos 10 cambios
dbfilename dump.rdb
dir /var/lib/redis/
- Auditar módulos de terceros:
MODULE LIST y deshabilitar aquellos no esenciales.– Actualizar módulos a versiones parcheadas. Por ejemplo, para redisearch:
sudo apt install redisearch=2.6.5-1chl1~jammy1
Plan de respuesta a incidentes
- Contener el incidente:
sudo systemctl stop redis
sudo iptables -A INPUT -p tcp --dport 6379 -j DROP
- Recuperar datos:
redis-check-rdb /var/lib/redis/dump.rdb
redis-server /etc/redis/redis.conf --dbfilename dump.rdb
- Investigar:
/var/log/redis/redis-server.log) y comandos sospechosos.– Usar herramientas como Volatility o Rekall para analizar la memoria del servidor si se sospecha de ejecución de código.
- Notificar y mejorar:
– Documentar el incidente y actualizar políticas de seguridad, como deshabilitar CONFIG SET para usuarios no administradores.
Conclusión
Redis se ha convertido en un objetivo crítico en 2024, no solo por su popularidad como caché y almacén de estados, sino por su exposición frecuente a internet y configuraciones inseguras por defecto. Los equipos de DevOps y seguridad deben priorizar la auditoría de instancias Redis, la aplicación de parches y la implementación de controles como autenticación, TLS y restricciones de red. Ignorar estos pasos puede llevar a compromisos que escalen a ransomware, fugas de datos o persistencia de amenazas en entornos cloud y Kubernetes.
La clave está en tratar Redis como cualquier otro servicio crítico: con configuraciones seguras por defecto, monitoreo proactivo y planes de respuesta a incidentes. Los equipos que implementen estas medidas reducirán drásticamente su superficie de ataque y evitarán ser el próximo caso de estudio en los informes de ciberseguridad.
