🚨 CVE-2025-49844 (RediShell) - Guia Completo
⚠️ Apenas para Aprender, Não para Hackear ;) ⚠️
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
# 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
# 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
# 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!)
# 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
# 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
# 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)
# 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
# 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
# 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
# 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)