
Exploit para Redis 8.2.1 de escape del sandbox de Lua mediante APIs obsoletas y metatablas mutables, lo que permite la ejecución de comandos entre usuarios.
Escape del sandbox mediante APIs Lua obsoletas y metatablas mutables en Redis 8.2.1.
Redis 8.2.1 mantiene expuestos a los scripts los builtins Lua obsoletos (getfenv, setfenv, newproxy) y no bloquea las metatablas de los tipos básicos. Un atacante puede inyectar métodos en metatablas compartidas, capturar entornos privilegiados y ejecutar comandos con los permisos de otro usuario.
redis-cliCVE-2025-46818.lua – verifica que los builtins obsoletos estén presentes, modifica la metatabla de strings y expone un helper.# Configuración
redis-cli -h localhost -p 6379 --eval CVE-2025-46818.lua
# Invocar el helper inyectado (asumiendo que el usuario víctima tiene privilegios superiores):
redis-cli -h localhost -p 6379 EVAL "return ('test').escalate()" 0
Resultado esperado:
En 8.2.1 el script inicial informa que las APIs obsoletas son true y confirma la modificación de la metatabla. La llamada posterior devuelve la salida de ACL WHOAMI (o cualquier comando privilegiado que se intercambie). Redis 8.2.2 elimina las APIs por defecto, hace que las metatablas básicas sean de solo lectura y registra los intentos.
Actualice a Redis 8.2.2 o posterior, o deshabilite Lua para usuarios no confiables o ejecute con lua-enable-deprecated-api no.