
Exploit per Redis 8.2.1 per l'escape della sandbox Lua tramite API deprecate e metatabelle mutabili, che consente l'esecuzione di comandi tra utenti.
Escape della sandbox tramite API Lua deprecate e metatabelle mutabili su Redis 8.2.1.
Redis 8.2.1 mantiene esposti agli script i builtin Lua deprecati (getfenv, setfenv, newproxy) e non blocca le metatabelle per i tipi di base. Un attaccante può iniettare metodi nelle metatabelle condivise, catturare ambienti privilegiati ed eseguire comandi con i permessi di un altro utente.
redis-cliCVE-2025-46818.lua – verifica la presenza dei builtin deprecati, modifica la metatabella delle stringhe ed espone un helper.# Configurazione
redis-cli -h localhost -p 6379 --eval CVE-2025-46818.lua
# Invoca l'helper iniettato (supponendo che l'utente vittima abbia privilegi più elevati):
redis-cli -h localhost -p 6379 EVAL "return ('test').escalate()" 0
Risultato atteso:
Su 8.2.1 lo script iniziale riporta le API deprecate come true e conferma la modifica della metatabella. La chiamata successiva restituisce l'output di ACL WHOAMI (o di qualsiasi comando privilegiato che si desidera sostituire). Redis 8.2.2 rimuove le API per impostazione predefinita, rende le metatabelle di base di sola lettura e registra i tentativi.
Aggiornare a Redis 8.2.2 o successivo, oppure disabilitare Lua per utenti non fidati o eseguire con lua-enable-deprecated-api no.