
Preuve de concept pour le dépassement d'entier de unpack dans Lua de Redis (CVE-2025-46817) démontrant l'explosion de la pile et une potentielle exécution de code à distance (RCE) sur Redis 8.2.1.
unpack Lua Redis (RCE potentielle)Preuve de concept de dépassement d'entier unpack Lua Redis provoquant une explosion de la pile et un crash sur la version 8.2.1.
Redis 8.2.1 embarque Lua 5.1 avec une implémentation de unpack qui calcule le nombre de résultats à l'aide d'entiers signés. Des indices de début/fin soigneusement choisis font déborder l'arithmétique, contournent lua_checkstack et forcent Lua à pousser des milliards de résultats. Combiné avec l'enveloppement des index de table, cela peut corrompre la mémoire du tas et conduire à une RCE.
redis-cliCVE-2025-46817.lua – appelle unpack avec une plage qui fait déborder l'arithmétique signée.redis-cli -h localhost -p 6379 --eval CVE-2025-46817.lua
Résultat attendu :
Sur la version 8.2.1, le serveur termine généralement la connexion ou plante en raison d'une croissance excessive de la pile. Redis 8.2.2 (commit fc9abc775e308374f667fdf3e723ef4b7eb0e3ca) rejette l'appel avec « ERR Error running script (too many results to unpack) ».
Mettez à niveau vers Redis 8.2.2 ou une version ultérieure, qui durcit luaB_unpack et luaH_getnum, ou désactivez les scripts Lua pour les utilisateurs non fiables.