
Minimaler Redis-Honeypot zur Erkennung von RediShell-Exploits (CVE-2025-49844).
RediTrap ist ein minimaler Redis-Honeypot, der darauf ausgelegt ist, frühe Versuche zur Ausnutzung von
CVE-2025-49844 („RediShell") zu erkennen, der kritischen Remote-Code-Execution-Schwachstelle, die von
Wiz Research beschrieben wurde. Der Exploit missbraucht einen 13 Jahre alten Use-after-Free-Bug in der
eingebetteten Lua-Engine: Redis speicherte den Lua-Chunk-Namen, ohne ihn zuvor auf dem Stack zu verankern,
wodurch ein Garbage-Collection-Zyklus den String zurückfordern konnte, während C-Code den Zeiger noch
verwendete. Der Redis-Patch
d5728cb
behebt das Problem, indem der Chunk-Name vor dem Parsen auf den Lua-Stack geschoben wird (über
setsvalue2s/incr_top) und danach wieder entfernt wird, wodurch der veraltete Zeiger verhindert und die
RCE-Primitive geschlossen wird.
Da der veröffentlichte Exploit-Pfad darauf beruht, bösartige Lua-Skripte über
EVAL, EVALSHA oder SCRIPT LOAD zu senden, konzentriert sich der Honeypot darauf, diese
Interaktionen sichtbar zu machen, während er vorgibt, ein ungepatchter Redis-Knoten zu sein.
6379) und spricht eine kleine RESP-
Teilmenge, sodass grundlegende Probes erfolgreich sind (, , usw.).PINGINFOAUTHHELLO), um Angreifer dazu zu ermutigen,
ihren Workflow fortzusetzen.python3 reditrap.py --host 0.0.0.0 --port 6379 --log-file logs/redis-honeypot-events.ndjson
Verwenden Sie --verbose für zusätzliche stdout-Protokollierung während der Entwicklung.
Erstellen Sie ein kompaktes Image (Alpine-Basis):
docker build -t reditrap .
# oder: podman build -t reditrap .
Führen Sie es mit dem freigegebenen Redis-Port und dem auf dem Host eingehängten Protokollverzeichnis aus:
mkdir -p honeypot-logs
docker run -d --name reditrap \
-p 6379:6379 \
-v "$(pwd)/honeypot-logs:/data" \
reditrap
Der Container verwendet standardmäßig --host 0.0.0.0 --port 6379 --log-file /data/redis-honeypot-events.ndjson, sodass Protokolle auf dem Host unter
honeypot-logs/redis-honeypot-events.ndjson landen.
Podman funktioniert auf die gleiche Weise (fügen Sie bei Bedarf das SELinux-Flag hinzu):
podman run -d --name reditrap \
-p 6379:6379 \
-v "$(pwd)/honeypot-logs:/data:Z" \
reditrap
Überschreiben Sie Standardwerte, indem Sie Argumente nach dem Image-Namen anhängen, zum Beispiel:
docker run --rm -p 6379:6379 reditrap --redis-version 7.0.15 --log-file /data/attempts.ndjson
Jede eingehende Anfrage wird zu einem NDJSON-Eintrag. Verdächtige Lua-Aktivitäten enthalten Heuristiken, um die Triage zu erleichtern. Zum Beispiel:
{
"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"
}
Kombinieren Sie die Protokolle mit Netzwerktelemetrie, um die angreifende Quelle zu verfolgen und über Reaktionsmaßnahmen zu entscheiden.