Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!
CVE-2025-49844 — Scanner und Lernleitfaden für CVE-2025-49844 (RediShell), eine Use-after-Free-Schwachstelle im Redis-Lua-Scripting. Prüft Redis-Server auf Gefährdung, bietet Abhilfemaßnahmen und erläutert die Exploit-Mechanik zu Lernzwecken. | Kitploit
Scanner und Lernleitfaden für CVE-2025-49844 (RediShell), eine Use-after-Free-Schwachstelle im Redis-Lua-Scripting. Prüft Redis-Server auf Gefährdung, bietet Abhilfemaßnahmen und erläutert die Exploit-Mechanik zu Lernzwecken.
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
root@kitploit:~
# 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
root@kitploit:~
# 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
root@kitploit:~
# 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!)
root@kitploit:~
# 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
root@kitploit:~
# 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
root@kitploit:~
# 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)
root@kitploit:~
# 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
root@kitploit:~
# 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
root@kitploit:~
# 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
root@kitploit:~
# 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)
Wie der Speicher kaputt geht
Der Bug passiert, wenn:
Du bestimmte Muster von Objekten in Lua erstellst
Du damit herumspielst, wie Redis Referenzen auf Speicher zählt
Du Redis dazu zwingst, den Speicher zum falschen Zeitpunkt aufzuräumen
Du das Timing ausnutzt, wann Redis den Speicher verwaltet
Welche Versionen sind betroffen
Redis Version 8.2.1 und älter
Jede Version mit aktiviertem Lua-Scripting
Dieser Bug existiert seit etwa 13 Jahren (autsch!)
Wie Exploits aussehen (Zum Lernen)
Grundstruktur (Das wird nicht wirklich funktionieren)
root@kitploit:~
-- Das dient nur dazu, dir zu zeigen, wie die Struktur aussieht
local function create_memory_pattern()
-- Objekte erstellen, die mit der Speicherbereinigung von Redis herumspielen
local objects = {}
for i = 1, 1000 do
objects[i] = {data = "pattern_" .. i}
end
return objects
end
local function trigger_gc()
-- Redis dazu zwingen, den Speicher zum falschen Zeitpunkt aufzuräumen
collectgarbage("collect")
-- Hier passiert der Speicher-Bug
end
-- Hauptangriffsstruktur
local objects = create_memory_pattern()
-- Mit Speicherreferenzen herumspielen
-- Garbage Collection erzwingen
-- Den kaputten Speicher nutzen, um Code auszuführen
So schützt du dich
Dein Netzwerk absichern
Firewall-Regeln einrichten
Redis nicht mit dem ganzen Internet reden lassen
Deinen Netzwerkverkehr überwachen
Logging aktivieren
Kontrollieren, wer Zugriff hat
Starke Passwörter verwenden
Benutzerberechtigungen (ACLs) einrichten
Leuten nur den Zugriff geben, den sie brauchen
Regelmäßig prüfen, wer Zugriff hat
Auf Probleme achten
Deine Logs ansehen
Überwachen, wie Redis performt
Auf seltsames Verhalten achten
Einen Plan haben, falls etwas schiefgeht
Willst du das sicher testen?
Wenn du sehen willst, wie das funktioniert, ohne etwas Echtes kaputtzumachen, kannst du Docker verwenden:
root@kitploit:~
# Einen Test-Redis starten (dieser ist anfällig)
docker run -d --name redis-test -p 6379:6379 redis:6.0
# Testen
cd scanner
./rscan -host localhost -port 6379
# Den anfälligen stoppen und einen behobenen starten
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
# Aufräumen, wenn du fertig bist
docker stop redis-fixed && docker rm redis-fixed
Ausgefallenes Zeug (Falls du es willst)
Alle Optionen
root@kitploit:~
cd scanner
./rscan --help
Mehrere Server scannen
Erstelle eine hosts.txt-Datei wie diese:
root@kitploit:~
# Deine Server hier eintragen
server1.com
server2.com:6380
192.168.1.100
redis.example.com:6379
Schneller machen
root@kitploit:~
# Mehr Worker verwenden, um schneller zu scannen (falls du viele Server hast)
./rscan -host server1.com,server2.com -workers 20
Das dient nur zum Lernen und zum Schutz deiner eigenen Sachen. Benutze es nicht, um die Server anderer Leute zu hacken – das ist illegal. Sei nicht dumm.