
Exploit de prueba de concepto para el use-after-free del analizador Lua de Redis 8.2.1, que compite con la recolección de basura mediante llamadas loadstring manipuladas para lograr la ejecución remota de código.
La condición de carrera de GC con el nombre del chunk en Lua provoca un uso después de liberar (use-after-free) en Redis 8.2.1 y ejecución remota de código.
Redis incorpora Lua 5.1 para scripting. En versiones hasta la 8.2.1, la función luaY_parser NO ancla la cadena del nombre del chunk en la pila de Lua antes de invocar al analizador léxico. Un script manipulado puede provocar la recolección de basura mientras el analizador todavía hace referencia a la cadena liberada, produciendo un UAF que conduce a la ejecución de código nativo.
redis-cliCVE-2025-49844.lua – golpea el analizador con miles de llamadas a y un nombre de chunk con GC habilitado para ganar la carrera.loadstringwhile redis-cli -h localhost -p 6379 --eval CVE-2025-49844.lua >/dev/null; do
printf '.'
done
Resultado esperado:
En compilaciones vulnerables, el proceso de Redis acaba bloqueándose o cerrando la conexión. La versión parcheada 8.2.2 (commit d5728cb5795c966c5b5b1e0f0ac576a7e69af539) ancla el nombre del chunk y el script se ejecuta sin causar daños.
Actualice a Redis 8.2.2 o posterior, o deshabilite los scripts Lua para usuarios no confiables.