🚨 CVE-2025-49844 (RediShell) - Vollständiger Leitfaden
⚠️ Nur zum Lernen, nicht zum Hacken ;) ⚠️
Hey! Das ist ein einfaches Tool, das ich gebaut habe, um Leuten zu helfen zu prüfen, ob ihre Redis-Server anfällig für diesen Bug sind. Es ist nicht für echte Angriffe gedacht – nur zum Lernen und zum Schutz deiner eigenen Sachen.
Worum geht es hier?
Alles klar, meine Lieben, hier ist einer der interessantesten Fehlgriffe des Jahres 2025, CVE-2025-49844. Im Grunde genommen: Wenn jemand Lua-Skripte auf deinem Redis-Server ausführen kann, kann er Zugriff auf den Speicher erlangen.
Das Wichtigste
- Wie schlimm?: Richtig übel (9.9/10)
- Wer ist betroffen?: Jeder, der Redis Version 8.2.1 oder älter verwendet
- Was passiert?: Code-Ausführung
- Wie machen sie es?: Über Lua-Scripting (das Redis für ausgefallene Datenbank-Sachen nutzt)
Los geht's!
Schritt 1: Das Ding bauen
# Zuerst das Go-Zeug vorbereiten
cd scanner
go mod tidy
# Dann den Scanner bauen
go build -o rscan redis-scanner.go
Schritt 2: Deine Server prüfen
# Einen Server prüfen
./rscan -host your-server.com -port 6379
# Mit Passwort prüfen (falls du eins hast)
./rscan -host your-server.com -port 6379 -auth deinpasswort
# Mehrere auf einmal prüfen
./rscan -host server1.com,server2.com,server3.com
# Oder aus einer Datei prüfen
./rscan -file hosts.txt
Schritt 3: Reparieren, was kaputt ist
# Lua-Scripting deaktivieren (das stoppt den Angriff)
redis-cli ACL SETUSER default -@scripting
# Oder einfach Redis auf die neueste Version aktualisieren
Was bedeuten die Ergebnisse?
- 🚨 GEFAHR! - Dein Redis ist anfällig (alte Version + Lua-Skripte funktionieren)
- 🛡️ Gut! - Dein Redis ist geschützt (Lua deaktiviert oder neuere Version)
- ✅ Super! - Dein Redis ist sicher (Version 8.2.2 oder neuer)
- ❌ Ups! - Keine Verbindung möglich oder etwas ist schiefgelaufen
Wie dieser Speicher-Bug funktioniert
Das Problem
Das nennt man einen "Use-after-Free"-Bug. Im Grunde hat Redis ein Speicherverwaltungssystem, das manchmal durcheinanderkommt, was den bereits aufgeräumten Speicher angeht.
So sollte es funktionieren:
- 📝 Redis erstellt einige Daten im Speicher
- 🔍 Verwendet diese Daten für etwas
- 🗑️ Räumt den Speicher auf, wenn es fertig ist
- ✅ Alles ist sicher und in Ordnung
So funktioniert es tatsächlich (Der Bug):
- 📝 Redis erstellt einige Daten im Speicher
- 🔍 Verwendet diese Daten für etwas
- 🗑️ Räumt den Speicher auf
- 🔍 Versucht, die Daten erneut zu verwenden (aber sie sind schon weg!)
- 💥 Alles bricht zusammen, was dann für den Spaß ausgenutzt wird ;)
Wie Hacker das nutzen
- Was sie angreifen: Das Lua-Scripting-System von Redis
- Befehle, die sie verwenden:
EVAL und EVALSHA (diese führen Lua-Skripte aus)
- Was sie wollen: Speicher überschreiben und beliebigen Code ausführen
So behebst du das
Das jetzt sofort tun (erste 24 Stunden)
- Finde alle deine Redis-Server (du hast vielleicht mehr, als du denkst)
- Prüfe ihre Versionen (alles ab 8.2.1 oder älter ist übel, du musst aktualisieren!)
- Deaktiviere Lua-Skripte (das stoppt den Angriff sofort)
- Plane dein Upgrade (das ist die eigentliche Lösung)
Schnellfix (Stoppe den Angriff jetzt!)
# Lua-Skripte deaktivieren (das stoppt den Angriff)
redis-cli ACL SETUSER default -@scripting
# Oder deine redis.conf-Datei bearbeiten und diese Zeile hinzufügen:
disable-commands eval evalsha
# Dann Redis neu starten
sudo systemctl restart redis
Dein Netzwerk absichern
# Nur bestimmten IPs erlauben, sich mit Redis zu verbinden
iptables -A INPUT -p tcp --dport 6379 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 6379 -j DROP
# Redis nur auf bestimmten Netzwerkschnittstellen lauschen lassen
bind 127.0.0.1 10.0.0.100
Ordentliche Passwörter einrichten
# Ein starkes Passwort setzen
redis-cli CONFIG SET requirepass "fuckredis1234ilovehacking!"
# Benutzer mit eingeschränkten Berechtigungen erstellen
redis-cli ACL SETUSER appuser on >passwort +@read +@write -@scripting
redis-cli ACL SETUSER readonly on >passwort +@read -@scripting
Redis aktualisieren (Die eigentliche Lösung)
# Zuerst deine Daten sichern (immer machen!)
sudo cp -r /var/lib/redis /var/lib/redis.backup.$(date +%Y%m%d)
# Redis auf die behobene Version aktualisieren
# Auf Ubuntu/Debian:
sudo apt update && sudo apt install redis-server=8.2.2*
# Auf CentOS/RHEL:
sudo yum update redis
# Prüfen, ob es funktioniert hat
redis-server --version
Testen, ob dein Fix wirklich funktioniert
Sicherstellen, dass Skripte blockiert sind
# Das sollte fehlschlagen, wenn dein Fix funktioniert
redis-cli -a "DeinPasswort" EVAL "return 'test'" 0
# Sollte sagen: (error) ERR unknown command 'EVAL'
Deine Netzwerksicherheit prüfen
# Sehen, ob Redis aus dem Netzwerk erreichbar ist
nmap -p 6379 dein-redis-server
# Testen, ob ein Passwort erforderlich ist
redis-cli -h dein-redis-server -p 6379 ping
# Sollte nach einem Passwort fragen
So erkennst du diesen Angriff
Anzeichen in deinem Netzwerk
- Vermehrte Muster von Lua-Skriptnutzung
- Jemand sendet wirklich große oder komplizierte Skripte
- Viele Skripte laufen sehr schnell
- Skripte, die offensichtlich verdächtig sind
Anzeichen auf deinem Server
- Redis stürzt ständig ab oder startet neu
- Speichernutzung springt hoch und/oder runter
- Redis stellt seltsame Netzwerkverbindungen her
- Auf Dateien wird zugegriffen, auf die nicht zugegriffen werden sollte
Deine Logs prüfen
# Nach seltsamer Lua-Skriptaktivität suchen
grep -i "eval\|evalsha" /var/log/redis/redis.log
# Nach fehlgeschlagenen Anmeldeversuchen suchen
grep -i "auth" /var/log/redis/redis.log
# Nach Skriptfehlern suchen
grep -i "script" /var/log/redis/redis.log
Wie schwer ist das auszunutzen?
Es ist ziemlich kompliziert (wenn du nicht weißt, was los ist)
- Du musst verstehen, wie Redis intern funktioniert
- Speicher-Tricks: Du musst mit der Speicherverwaltung von Redis herumspielen
- Lua-Kenntnisse: Du musst gut darin sein, Lua-Skripte zu schreiben
- Perfektes Timing: Du musst den Bug genau im richtigen Moment auslösen
Wie echte Exploits aussehen
- Seltsame Speichermuster erzeugen: Lua-Skripte schreiben, die Redis dazu bringen, den Speicher auf bestimmte Weise anzuordnen
- Den Aufräumprozess austricksen: Redis dazu bringen, den Speicher zum falschen Zeitpunkt aufzuräumen
- Den Speicher brechen: Redis dazu bringen, bereits gelöschten Speicher zu verwenden
- Deinen Code ausführen: Den kaputten Speicher nutzen, um auszuführen, was du willst
Wie schlimm ist das wirklich?
Was passiert, wenn du gehackt wirst
- Komplette Übernahme: Hacker können alles auf deinem Server ausführen, was sie wollen
- Alle deine Daten: Sie können alles in deiner Redis-Datenbank sehen
- Ausbreitung auf andere Server: Sie könnten deinen Server nutzen, um andere Dinge anzugreifen
- Versteckt bleiben: Sie können den Zugriff behalten, selbst nachdem du denkst, du hättest es behoben
Was das für dein Unternehmen bedeutet
- Datenleck: Alle deine sensiblen Informationen könnten gestohlen werden
- Alles bricht zusammen: Dein Redis-Dienst könnte aufhören zu funktionieren
- Rechtliche Probleme: Du könntest eine Geldstrafe bekommen, weil du Daten nicht geschützt hast
- Niemand vertraut dir: Kunden könnten gehen, wenn sie es herausfinden
Lass uns technisch werden
Welche Teile von Redis sind kaputt
- Lua-Scripting-Engine (
eval- und evalsha-Befehle)
- Wie Redis den Speicher verwaltet
- Das Garbage-Collection-System (räumt ungenutzten Speicher auf)