Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!
CVE-2025-49844 — Scanner e guia educacional para CVE-2025-49844 (RediShell), uma vulnerabilidade de use-after-free em scripts Lua do Redis. Verifica servidores Redis quanto à exposição, fornece etapas de remediação e explica os mecanismos do exploit para fins de aprendizado. | Kitploit
Scanner e guia educacional para CVE-2025-49844 (RediShell), uma vulnerabilidade de use-after-free em scripts Lua do Redis. Verifica servidores Redis quanto à exposição, fornece etapas de remediação e explica os mecanismos do exploit para fins de aprendizado.
Ei! Esta é uma ferramenta simples que fiz para ajudar as pessoas a verificar se seus servidores Redis estão vulneráveis a essa falha. Não é para ataques reais - apenas para aprendizado e proteção das suas próprias coisas.
Sobre o Que É Isso?
Tudo bem, meu povo querido, aqui está uma das falhas mais interessantes de 2025, a CVE-2025-49844. Essencialmente, se alguém conseguir executar scripts Lua no seu servidor Redis, pode obter acesso à memória.
O Que Importa
Qual a Gravidade?: Fudida (9.9/10)
Quem é Afetado: Qualquer pessoa usando Redis versão 8.2.1 ou anterior
O Que Acontece: Execução de Código
Como Eles Fazem: Através de scripts Lua (que o Redis usa para coisas avançadas de banco de dados)
Vamos Começar!
Passo 1: Compile Essa Coisa
root@kitploit:~
# Primeiro, prepare o ambiente Go
cd scanner
go mod tidy
# Depois compile o scanner
go build -o rscan redis-scanner.go
Passo 2: Verifique Seus Servidores
root@kitploit:~
# Verifique um servidor
./rscan -host seu-servidor.com -port 6379
# Verifique com senha (se você tiver uma)
./rscan -host seu-servidor.com -port 6379 -auth suasenha
# Verifique vários de uma vez
./rscan -host servidor1.com,servidor2.com,servidor3.com
# Ou verifique a partir de um arquivo
./rscan -file hosts.txt
Passo 3: Corrija o Que Está Quebrado
root@kitploit:~
# Desative os scripts Lua (isso interrompe o ataque)
redis-cli ACL SETUSER default -@scripting
# Ou apenas atualize o Redis para a versão mais recente
O Que os Resultados Significam?
🚨 PERIGO! - Seu Redis está vulnerável (versão antiga + scripts Lua funcionando)
🛡️ Bom! - Seu Redis está protegido (Lua desativado ou versão mais recente)
✅ Ótimo! - Seu Redis está seguro (versão 8.2.2 ou mais recente)
❌ Ops! - Não foi possível conectar ou algo deu errado
Como Essa Falha de Memória Funciona
O Problema
Isso é o que chamamos de falha "use-after-free". Essencialmente, o Redis tem um sistema de gerenciamento de memória que às vezes se confunde sobre qual memória já foi limpa.
Como Deveria Funcionar:
📝 O Redis cria alguns dados na memória
🔍 Usa esses dados para algo
🗑️ Limpa a memória quando termina
✅ Tudo está seguro e protegido
Como Realmente Funciona (A Falha):
📝 O Redis cria alguns dados na memória
🔍 Usa esses dados para algo
🗑️ Limpa a memória
🔍 Tenta usar os dados novamente (mas eles já se foram!)
💥 Tudo quebra e isso é explorado por diversão ;)
Como os Hackers Usam Isso
O Que Eles Miram: O sistema de scripts Lua do Redis
Comandos Que Usam: EVAL e EVALSHA (esses executam scripts Lua)
O Que Querem: Sobrescrever a memória e executar código arbitrário
Como Corrigir Isso
Faça Isso Agora Mesmo (Primeiras 24 Horas)
Encontre todos os seus servidores Redis (você pode ter mais do que imagina)
Verifique as versões deles (qualquer coisa 8.2.1 ou anterior está fudida, você precisará atualizar!)
Desative os scripts Lua (isso interrompe o ataque imediatamente)
Planeje sua atualização (essa é a correção definitiva)
Correção Rápida (Pare o Ataque Agora!)
root@kitploit:~
# Desative os scripts Lua (isso interrompe o ataque)
redis-cli ACL SETUSER default -@scripting
# Ou edite seu arquivo redis.conf e adicione esta linha:
disable-commands eval evalsha
# Depois reinicie o Redis
sudo systemctl restart redis
Proteja Sua Rede
root@kitploit:~
# Permita apenas IPs específicos para conectar ao Redis
iptables -A INPUT -p tcp --dport 6379 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 6379 -j DROP
# Faça o Redis escutar apenas em interfaces de rede específicas
bind 127.0.0.1 10.0.0.100
Configure Senhas Adequadas
root@kitploit:~
# Defina uma senha forte
redis-cli CONFIG SET requirepass "fuckredis1234ilovehacking!"
# Crie usuários com permissões limitadas
redis-cli ACL SETUSER appuser on >password +@read +@write -@scripting
redis-cli ACL SETUSER readonly on >password +@read -@scripting
Atualize o Redis (A Correção Definitiva)
root@kitploit:~
# Faça backup dos seus dados primeiro (sempre faça isso!)
sudo cp -r /var/lib/redis /var/lib/redis.backup.$(date +%Y%m%d)
# Atualize o Redis para a versão corrigida
# No Ubuntu/Debian:
sudo apt update && sudo apt install redis-server=8.2.2*
# No CentOS/RHEL:
sudo yum update redis
# Verifique se funcionou
redis-server --version
Teste se Sua Correção Realmente Funciona
Certifique-se de que os Scripts Estão Bloqueados
root@kitploit:~
# Isso deve falhar se sua correção estiver funcionando
redis-cli -a "SuaSenha" EVAL "return 'test'" 0
# Deve dizer: (error) ERR unknown command 'EVAL'
Verifique Sua Segurança de Rede
root@kitploit:~
# Veja se o Redis está acessível pela rede
nmap -p 6379 seu-servidor-redis
# Teste se a senha é necessária
redis-cli -h seu-servidor-redis -p 6379 ping
# Deve pedir a senha
Como Detectar Esse Ataque
Sinais na Sua Rede
Padrões aumentados de uso de scripts Lua
Alguém enviando scripts muito grandes ou complicados
Muitos scripts rodando muito rápido
Scripts que são obviamente suspeitos
Sinais no Seu Servidor
O Redis fica travando ou reiniciando
Uso de memória subindo e/ou descendo
Redis fazendo conexões de rede estranhas
Arquivos sendo acessados que não deveriam
Verifique Seus Logs
root@kitploit:~
# Procure por atividade estranha de scripts Lua
grep -i "eval\|evalsha" /var/log/redis/redis.log
# Verifique tentativas de login falhas
grep -i "auth" /var/log/redis/redis.log
# Procure por erros de script
grep -i "script" /var/log/redis/redis.log
Quão Difícil É Explorar Isso?
É Bem Complicado (se você não sabe o que está acontecendo)
Você precisa entender como o Redis funciona internamente
Truques de Memória: Você tem que mexer em como o Redis gerencia a memória
Habilidades em Lua: Você precisa ser bom em escrever scripts Lua
Timing Perfeito: Você tem que acionar a falha exatamente no momento certo
Como São os Exploits Reais
Crie Padrões de Memória Estranhos: Escreva scripts Lua que fazem o Redis organizar a memória de maneiras específicas
Engane o Processo de Limpeza: Faça o Redis limpar a memória no momento errado
Quebre a Memória: Faça o Redis usar memória que já foi deletada
Execute Seu Código: Use a memória quebrada para executar o que quiser
Quão Ruim Isso É Realmente?
O Que Acontece Se Você For Hackeado
Assunção Total: Hackers podem executar qualquer coisa que quiserem no seu servidor
Todos os Seus Dados: Eles podem ver tudo no seu banco de dados Redis
Espalhar para Outros Servidores: Eles podem usar seu servidor para atacar outras coisas
Permanecer Escondidos: Eles podem manter o acesso mesmo depois que você acha que corrigiu
O Que Isso Significa para Seu Negócio
Dados Vazados: Todas as suas informações sensíveis podem ser roubadas
Tudo Quebra: Seu serviço Redis pode parar de funcionar
Problemas Legais: Você pode ser multado por não proteger os dados
Ninguém Confia em Você: Clientes podem ir embora se descobrirem
Vamos Falar Tecnicamente
Quais Partes do Redis Estão Quebradas
Motor de scripts Lua (comandos eval e evalsha)
Como o Redis gerencia a memória
O sistema de coleta de lixo (limpa memória não utilizada)
Como a Memória é Quebrada
A falha acontece quando:
Você cria padrões específicos de objetos em Lua
Você mexe em como o Redis conta referências à memória
Você força o Redis a limpar a memória no momento errado
Você explora o timing de quando o Redis gerencia a memória
Quais Versões São Afetadas
Redis versão 8.2.1 e anteriores
Qualquer versão que tenha scripts Lua ativados
Essa falha existe há cerca de 13 anos (caramba!)
Como São os Exploits (Para Aprendizado)
Estrutura Básica (Isso Não Vai Funcionar de Verdade)
root@kitploit:~
-- Isso é apenas para mostrar como é a estrutura
local function create_memory_pattern()
-- Crie objetos que mexem com a limpeza de memória do Redis
local objects = {}
for i = 1, 1000 do
objects[i] = {data = "pattern_" .. i}
end
return objects
end
local function trigger_gc()
-- Force o Redis a limpar a memória no momento errado
collectgarbage("collect")
-- É aqui que a falha de memória acontece
end
-- Estrutura principal do ataque
local objects = create_memory_pattern()
-- Mexa com as referências de memória
-- Force a coleta de lixo
-- Use a memória quebrada para executar código
Como se Proteger
Proteja Sua Rede
Configure regras de firewall
Não deixe o Redis falar com toda a internet
Monitore seu tráfego de rede
Ative o registro de logs
Controle Quem Pode Acessar
Use senhas fortes
Configure permissões de usuário (ACLs)
Dê apenas o acesso que as pessoas precisam
Verifique regularmente quem tem acesso
Fique Atento a Problemas
Olhe seus logs
Monitore o desempenho do Redis
Fique atento a comportamentos estranhos
Tenha um plano para quando as coisas derem errado
Quer Testar Isso com Segurança?
Se você quiser ver como isso funciona sem quebrar nada real, pode usar o Docker:
root@kitploit:~
# Inicie um Redis de teste (este é vulnerável)
docker run -d --name redis-test -p 6379:6379 redis:6.0
# Teste-o
cd scanner
./rscan -host localhost -port 6379
# Pare o vulnerável e inicie um corrigido
docker stop redis-test
docker run -d --name redis-fixed -p 6379:6379 redis:6.0 redis-server --rename-command EVAL "" --rename-command EVALSHA ""
./rscan -host localhost -port 6379
# Limpe quando terminar
docker stop redis-fixed && docker rm redis-fixed
Coisas Extras (Se Você Quiser)
Todas as Opções
root@kitploit:~
cd scanner
./rscan --help
Escaneando Múltiplos Servidores
Crie um arquivo hosts.txt assim:
root@kitploit:~
# Coloque seus servidores aqui
servidor1.com
servidor2.com:6380
192.168.1.100
redis.exemplo.com:6379
Deixe Mais Rápido
root@kitploit:~
# Use mais workers para escanear mais rápido (se você tiver muitos servidores)
./rscan -host servidor1.com,servidor2.com -workers 20