
Exploit de preuve de concept pour le use-after-free du parser Lua de Redis 8.2.1, entrant en course avec le ramasse-miettes via des appels loadstring spécialement conçus pour réaliser une exécution de code à distance.
Course GC sur le nom de chunk Lua menant à un use-after-free dans Redis 8.2.1 et à une exécution de code à distance.
Redis intègre Lua 5.1 pour les scripts. Dans les versions jusqu'à 8.2.1, la fonction luaY_parser n'ancré PAS la chaîne du nom de chunk sur la pile Lua avant d'invoquer l'analyseur lexical. Un script conçu peut déclencher le ramasse-miettes pendant que le parseur référence encore la chaîne libérée, produisant un UAF qui mène à l'exécution de code natif.
redis-cliCVE-2025-49844.lua – marteler le parseur avec des milliers d'appels loadstring et un nom de chunk compatible GC pour gagner la course.while redis-cli -h localhost -p 6379 --eval CVE-2025-49844.lua >/dev/null; do
printf '.'
done
Résultat attendu :
Sur les builds vulnérables, le processus Redis finit par planter ou abandonner la connexion. La version corrigée 8.2.2 (commit d5728cb5795c966c5b5b1e0f0ac576a7e69af539) ancré le nom de chunk et le script s'exécute sans danger.
Mettez à niveau vers Redis 8.2.2 ou une version ultérieure, ou désactivez les scripts Lua pour les utilisateurs non fiables.