
Honeypot Redis mínimo que deteta explorações do RediShell (CVE-2025-49844).
RediTrap é um honeypot Redis mínimo, projetado para detectar tentativas precoces de exploração da
CVE-2025-49844 ("RediShell"), a vulnerabilidade crítica de execução remota de código
descrita pela Wiz Research. A exploração abusa de um bug de use-after-free com 13 anos de idade no
motor Lua embutido: o Redis armazenava o nome do chunk Lua sem antes
ancorá-lo na pilha, permitindo que um ciclo de coleta de lixo recuperasse a
string enquanto o código C ainda usava o ponteiro. O patch do Redis
d5728cb
corrige o problema empurrando o nome do chunk para a pilha Lua (via
setsvalue2s/incr_top) antes de analisá-lo e removendo-o depois, prevenindo
o ponteiro obsoleto e fechando a primitiva de RCE.
Como o caminho de exploração publicado depende do envio de scripts Lua maliciosos via
EVAL, EVALSHA ou SCRIPT LOAD, o honeypot foca em expor essas
interações enquanto finge ser um nó Redis sem patch.
6379PINGINFOAUTHHELLO) para incentivar
os atacantes a continuarem seu fluxo de trabalho.python3 reditrap.py --host 0.0.0.0 --port 6379 --log-file logs/redis-honeypot-events.ndjson
Use --verbose para registro adicional no stdout durante o desenvolvimento.
Construa uma imagem compacta (base Alpine):
docker build -t reditrap .
# ou: podman build -t reditrap .
Execute-a com a porta Redis exposta e o diretório de logs montado no host:
mkdir -p honeypot-logs
docker run -d --name reditrap \
-p 6379:6379 \
-v "$(pwd)/honeypot-logs:/data" \
reditrap
O contêiner usa por padrão --host 0.0.0.0 --port 6379 --log-file /data/redis-honeypot-events.ndjson, então os logs chegam ao host em
honeypot-logs/redis-honeypot-events.ndjson.
O Podman funciona da mesma forma (adicione a flag SELinux se aplicável):
podman run -d --name reditrap \
-p 6379:6379 \
-v "$(pwd)/honeypot-logs:/data:Z" \
reditrap
Substitua os padrões anexando argumentos após o nome da imagem, por exemplo:
docker run --rm -p 6379:6379 reditrap --redis-version 7.0.15 --log-file /data/attempts.ndjson
Cada solicitação recebida torna-se uma entrada NDJSON. Atividade Lua suspeita inclui heurísticas para facilitar a triagem. Por exemplo:
{
"action": "lua_eval",
"args": ["return debug.getregistry()", "0"],
"command": "EVAL",
"info": {
"arg_count": 2,
"heuristics": {
"length": 26,
"matched_tokens": ["debug."],
"preview": "return debug.getregistry()"
},
"key_count": "0",
"script_hash": "763200efa15885c9fa970d45cc2b11711c739c13"
},
"remote": {"host": "203.0.113.42", "port": 58231},
"timestamp": "2025-10-07T15:04:12.123456+00:00"
}
Combine os logs com telemetria de rede para rastrear a origem do ataque e decidir sobre ações de resposta.