
Exploit für Redis 8.2.1 Lua-Sandbox-Escape über veraltete APIs und veränderbare Metatabellen, die die Ausführung von Befehlen über Benutzergrenzen hinweg ermöglicht.
Sandbox-Escape über veraltete Lua-APIs und veränderbare Metatables auf Redis 8.2.1.
Redis 8.2.1 hält veraltete Lua-Builtins (getfenv, setfenv, newproxy) für Skripte verfügbar und versäumt es, Metatables für Basistypen zu sperren. Ein Angreifer kann Methoden in gemeinsame Metatables einschleusen, privilegierte Umgebungen erfassen und Befehle mit den Berechtigungen eines anderen Benutzers ausführen.
redis-cliCVE-2025-46818.lua – prüft, ob veraltete Builtins vorhanden sind, patcht die String-Metatable und stellt einen Helfer bereit.# Einrichtung
redis-cli -h localhost -p 6379 --eval CVE-2025-46818.lua
# Aufruf des eingeschleusten Helfers (unter der Annahme, dass das Opfer höhere Rechte hat):
redis-cli -h localhost -p 6379 EVAL "return ('test').escalate()" 0
Erwartetes Ergebnis:
Auf 8.2.1 meldet das anfängliche Skript die veralteten APIs als true und bestätigt die Metatable-Modifikation. Der Folgeaufruf gibt die Ausgabe von ACL WHOAMI zurück (oder eines beliebigen privilegierten Befehls, den Sie einsetzen). Redis 8.2.2 entfernt die APIs standardmäßig, macht grundlegende Metatables schreibgeschützt und protokolliert Versuche.
Upgrade auf Redis 8.2.2 oder höher, oder deaktivieren Sie Lua für nicht vertrauenswürdige Benutzer bzw. führen Sie es mit lua-enable-deprecated-api no aus.