
Exploit pour Redis 8.2.1, échappement du bac à sable Lua via des API obsolètes et des métatables mutables, permettant l'exécution de commandes entre utilisateurs.
Évasion du bac à sable via des API Lua obsolètes et des métatables mutables sur Redis 8.2.1.
Redis 8.2.1 conserve les fonctions intégrées Lua obsolètes (getfenv, setfenv, newproxy) exposées aux scripts et ne verrouille pas les métatables des types de base. Un attaquant peut injecter des méthodes dans les métatables partagées, capturer des environnements privilégiés et exécuter des commandes avec les permissions d'un autre utilisateur.
redis-cliCVE-2025-46818.lua# Configuration
redis-cli -h localhost -p 6379 --eval CVE-2025-46818.lua
# Appel de la fonction d'aide injectée (en supposant que l'utilisateur victime dispose de privilèges supérieurs) :
redis-cli -h localhost -p 6379 EVAL "return ('test').escalate()" 0
Résultat attendu :
Sur la version 8.2.1, le script initial signale les API obsolètes comme true et confirme la modification de la métatable. L'appel suivant renvoie la sortie de ACL WHOAMI (ou de toute commande privilégiée que vous remplacez). Redis 8.2.2 supprime les API par défaut, rend les métatables de base en lecture seule et journalise les tentatives.
Mettez à niveau vers Redis 8.2.2 ou une version ultérieure, ou désactivez Lua pour les utilisateurs non fiables ou exécutez avec lua-enable-deprecated-api no.