
Prueba de concepto para el desbordamiento de enteros en unpack de Lua en Redis (CVE-2025-46817) que demuestra el agotamiento de la pila y un posible RCE en Redis 8.2.1.
unpack de Redis Lua (Posible RCE)PoC de desbordamiento de enteros en unpack de Redis Lua que provoca un crecimiento descontrolado de la pila y un bloqueo en la versión 8.2.1.
Redis 8.2.1 incluye Lua 5.1 con una implementación de unpack que calcula el número de resultados utilizando enteros con signo. Los índices de inicio/fin cuidadosamente elegidos desbordan la aritmética, omiten lua_checkstack y fuerzan a Lua a insertar miles de millones de resultados. Combinado con el ajuste de índices de tabla, esto puede corromper la memoria del heap y provocar RCE.
redis-cliCVE-2025-46817.lua – llama a unpack con un rango que desborda la aritmética con signo.redis-cli -h localhost -p 6379 --eval CVE-2025-46817.lua
Resultado esperado:
En la versión 8.2.1, el servidor normalmente termina la conexión o se bloquea debido al crecimiento excesivo de la pila. Redis 8.2.2 (commit fc9abc775e308374f667fdf3e723ef4b7eb0e3ca) rechaza la llamada con "ERR Error running script (too many results to unpack)".
Actualice a Redis 8.2.2 o posterior, que refuerza luaB_unpack y luaH_getnum, o deshabilite los scripts Lua para usuarios no confiables.