
Exploit para Redis 8.2.1 de escape do sandbox Lua via APIs obsoletas e metatabelas mutáveis, permitindo execução de comandos entre usuários.
Fuga da sandbox por meio de APIs Lua obsoletas e metatabelas mutáveis no Redis 8.2.1.
O Redis 8.2.1 mantém builtins Lua obsoletos (getfenv, setfenv, newproxy) expostos a scripts e não bloqueia metatabelas para tipos básicos. Um atacante pode injetar métodos em metatabelas compartilhadas, capturar ambientes privilegiados e executar comandos com as permissões de outro usuário.
redis-cliCVE-2025-46818.lua – verifica se os builtins obsoletos estão presentes, aplica patch na metatabela de strings e expõe um auxiliar.# Configuração
redis-cli -h localhost -p 6379 --eval CVE-2025-46818.lua
# Invoca o auxiliar injetado (supondo que o usuário vítima tenha privilégios maiores):
redis-cli -h localhost -p 6379 EVAL "return ('test').escalate()" 0
Resultado esperado:
No 8.2.1, o script inicial relata as APIs obsoletas como true e confirma a modificação da metatabela. A chamada subsequente retorna a saída de ACL WHOAMI (ou qualquer comando privilegiado que você substituir). O Redis 8.2.2 remove as APIs por padrão, torna as metatabelas básicas somente leitura e registra tentativas.
Atualize para o Redis 8.2.2 ou posterior, ou desabilite o Lua para usuários não confiáveis ou execute com lua-enable-deprecated-api no.