🚨 CVE-2025-49844 (RediShell) - Guía Completa
⚠️ Solo para Aprender, No para Hackear ;) ⚠️
¡Hola! Esta es una herramienta sencilla que hice para ayudar a la gente a comprobar si sus servidores Redis son vulnerables a este fallo. No está pensada para ataques reales, solo para aprender y proteger tus propias cosas.
¿De Qué Va Todo Esto?
Muy bien, gente querida, aquí tenemos uno de los fallos más interesantes de 2025, el CVE-2025-49844. Básicamente, si alguien puede ejecutar scripts Lua en tu servidor Redis, puede obtener acceso a la memoria.
Lo Importante
- ¿Qué tan grave es?: Jodido (9.9/10)
- ¿A quién afecta?: A cualquiera que use Redis versión 8.2.1 o anterior
- ¿Qué ocurre?: Ejecución de código
- ¿Cómo lo hacen?: Mediante scripts Lua (que Redis usa para cosas avanzadas de bases de datos)
¡Empecemos!
Paso 1: Compila Esta Cosa
# Primero, prepara lo de Go
cd scanner
go mod tidy
# Luego compila el escáner
go build -o rscan redis-scanner.go
Paso 2: Comprueba Tus Servidores
# Comprueba un servidor
./rscan -host tu-servidor.com -port 6379
# Comprueba con contraseña (si tienes una)
./rscan -host tu-servidor.com -port 6379 -auth tucontraseña
# Comprueba varios a la vez
./rscan -host servidor1.com,servidor2.com,servidor3.com
# O comprueba desde un archivo
./rscan -file hosts.txt
Paso 3: Arregla Lo Que Está Roto
# Desactiva los scripts Lua (esto detiene el ataque)
redis-cli ACL SETUSER default -@scripting
# O simplemente actualiza Redis a la versión más reciente
¿Qué Significan los Resultados?
- 🚨 ¡PELIGRO! - Tu Redis es vulnerable (versión antigua + scripts Lua funcionan)
- 🛡️ ¡Bien! - Tu Redis está protegido (Lua desactivado o versión más nueva)
- ✅ ¡Genial! - Tu Redis está seguro (versión 8.2.2 o posterior)
- ❌ ¡Ups! - No se puede conectar o algo salió mal
Cómo Funciona Este Fallo de Memoria
El Problema
Esto es lo que se llama un fallo de "use-after-free" (uso después de liberar). Básicamente, Redis tiene un sistema de gestión de memoria que a veces se confunde sobre qué memoria ya ha limpiado.
Cómo Debería Funcionar:
- 📝 Redis crea algunos datos en memoria
- 🔍 Usa esos datos para algo
- 🗑️ Limpia la memoria cuando termina
- ✅ Todo está seguro y en orden
Cómo Funciona Realmente (El Fallo):
- 📝 Redis crea algunos datos en memoria
- 🔍 Usa esos datos para algo
- 🗑️ Limpia la memoria
- 🔍 Intenta usar los datos de nuevo (¡pero ya no están!)
- 💥 Todo se rompe y eso se explota por diversión ;)
Cómo Usan Esto los Hackers
- Qué Atacan: El sistema de scripts Lua de Redis
- Comandos Que Usan:
EVAL y EVALSHA (estos ejecutan scripts Lua)
- Qué Quieren: Sobrescribir memoria y ejecutar código arbitrario
Cómo Arreglar Esto
Haz Esto Ahora Mismo (Primeras 24 Horas)
- Encuentra todos tus servidores Redis (puede que tengas más de los que crees)
- Comprueba sus versiones (cualquier 8.2.1 o anterior está jodida, ¡tendrás que actualizar!)
- Desactiva los scripts Lua (esto detiene el ataque inmediatamente)
- Planifica tu actualización (esta es la solución real)
Solución Rápida (¡Detén el Ataque Ya!)
# Desactiva los scripts Lua (esto detiene el ataque)
redis-cli ACL SETUSER default -@scripting
# O edita tu archivo redis.conf y añade esta línea:
disable-commands eval evalsha
# Luego reinicia Redis
sudo systemctl restart redis
Bloquea Tu Red
# Solo permite que IPs específicas se conecten a Redis
iptables -A INPUT -p tcp --dport 6379 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 6379 -j DROP
# Haz que Redis solo escuche en interfaces de red específicas
bind 127.0.0.1 10.0.0.100
Configura Contraseñas Adecuadas
# Establece una contraseña fuerte
redis-cli CONFIG SET requirepass "fuckredis1234ilovehacking!"
# Crea usuarios con permisos limitados
redis-cli ACL SETUSER appuser on >password +@read +@write -@scripting
redis-cli ACL SETUSER readonly on >password +@read -@scripting
Actualiza Redis (La Solución Real)
# Haz una copia de seguridad de tus datos primero (¡hazlo siempre!)
sudo cp -r /var/lib/redis /var/lib/redis.backup.$(date +%Y%m%d)
# Actualiza Redis a la versión corregida
# En Ubuntu/Debian:
sudo apt update && sudo apt install redis-server=8.2.2*
# En CentOS/RHEL:
sudo yum update redis
# Comprueba que funcionó
redis-server --version
Prueba Que Tu Solución Funciona Realmente
Asegúrate de Que los Scripts Estén Bloqueados
# Esto debería fallar si tu solución funciona
redis-cli -a "TuContraseña" EVAL "return 'test'" 0
# Debería decir: (error) ERR unknown command 'EVAL'
Comprueba Tu Seguridad de Red
# Mira si Redis es accesible desde la red
nmap -p 6379 tu-servidor-redis
# Prueba si se requiere contraseña
redis-cli -h tu-servidor-redis -p 6379 ping
# Debería pedir contraseña
Cómo Detectar Este Ataque
Señales en Tu Red
- Patrones aumentados de uso de scripts Lua
- Alguien enviando scripts muy grandes o complicados
- Muchos scripts ejecutándose muy rápido
- Scripts que son obviamente sospechosos
Señales en Tu Servidor
- Redis se bloquea o reinicia constantemente
- El uso de memoria sube y/o baja de forma extraña
- Redis haciendo conexiones de red extrañas
- Archivos accedidos que no deberían serlo
Revisa Tus Registros
# Busca actividad extraña de scripts Lua
grep -i "eval\|evalsha" /var/log/redis/redis.log
# Comprueba intentos de inicio de sesión fallidos
grep -i "auth" /var/log/redis/redis.log
# Busca errores de scripts
grep -i "script" /var/log/redis/redis.log
¿Qué Tan Difícil Es Explotar Esto?
Es Bastante Complicado (si no sabes lo que está pasando)
- Necesitas entender cómo funciona Redis internamente
- Trucos de Memoria: Tienes que manipular cómo Redis gestiona la memoria
- Habilidades en Lua: Necesitas ser bueno escribiendo scripts Lua
- Sincronización Perfecta: Tienes que activar el fallo en el momento exacto
Cómo Son los Exploits Reales
- Crear Patrones de Memoria Extraños: Escribir scripts Lua que hagan que Redis organice la memoria de formas específicas
- Engañar al Proceso de Limpieza: Hacer que Redis limpie la memoria en el momento equivocado
- Romper la Memoria: Hacer que Redis use memoria que ya ha sido eliminada
- Ejecutar Tu Código: Usar la memoria rota para ejecutar lo que quieras
¿Qué Tan Grave Es Realmente?
Qué Pasa Si Te Hackean
- Toma de Control Total: Los hackers pueden ejecutar lo que quieran en tu servidor
- Todos Tus Datos: Pueden ver todo en tu base de datos Redis
- Propagación a Otros Servidores: Podrían usar tu servidor para atacar otras cosas
- Permanecer Ocultos: Pueden mantener el acceso incluso después de que creas que lo has arreglado
Qué Significa Esto Para Tu Negocio
- Fuga de Datos: Toda tu información sensible podría ser robada
- Todo Se Rompe: Tu servicio Redis podría dejar de funcionar
- Problemas Legales: Podrías ser multado por no proteger los datos
- Nadie Confía en Ti: Los clientes podrían irse si se enteran
Vamos a lo técnico
Qué Partes de Redis Están Rotas
- El motor de scripts Lua (comandos
eval y evalsha)
- Cómo Redis gestiona la memoria
- El sistema de recolección de basura (limpia memoria no utilizada)
Cómo Se Rompe la Memoria
El fallo ocurre cuando:
- Creas patrones específicos de objetos en Lua
- Manipulas cómo Redis cuenta las referencias a la memoria
- Fuerzas a Redis a limpiar la memoria en el momento equivocado
- Explotas el momento en que Redis gestiona la memoria
Qué Versiones Están Afectadas
- Redis versión 8.2.1 y anteriores
- Cualquier versión que tenga los scripts Lua activados
- Este fallo ha existido durante unos 13 años (¡uy!)
Cómo Son los Exploits (Para Aprender)