
# Honeypot Redis minimal détectant les exploits RediShell (CVE-2025-49844).
RediTrap est un honeypot Redis minimal conçu pour détecter les tentatives précoces d'exploitation de la CVE-2025-49844 (« RediShell »), la vulnérabilité critique d'exécution de code à distance décrite par Wiz Research. L'exploit abuse d'un bug use-after-free vieux de 13 ans dans le moteur Lua embarqué : Redis stockait le nom du chunk Lua sans l'ancrer au préalable sur la pile, permettant à un cycle de garbage collection de récupérer la chaîne pendant que le code C utilisait encore le pointeur. Le correctif Redis d5728cb corrige le problème en poussant le nom du chunk sur la pile Lua (via setsvalue2s/incr_top) avant l'analyse puis en le dépilant ensuite, empêchant le pointeur obsolète et fermant la primitive RCE.
Étant donné que le chemin d'exploitation publié repose sur l'envoi de scripts Lua malveillants via EVAL, EVALSHA ou SCRIPT LOAD, le honeypot se concentre sur la mise en évidence de ces interactions tout en se faisant passer pour un nœud Redis non corrigé.
6379 par défaut) et parle un petit sous-ensemble RESP afin que les sondes de base réussissent (, , , etc.).PINGINFOAUTHHELLO) pour encourager les attaquants à poursuivre leur flux de travail.python3 reditrap.py --host 0.0.0.0 --port 6379 --log-file logs/redis-honeypot-events.ndjson
Utilisez --verbose pour une journalisation stdout supplémentaire pendant le développement.
Construisez une image compacte (base Alpine) :
docker build -t reditrap .
# ou : podman build -t reditrap .
Exécutez-la avec le port Redis exposé et le répertoire de journaux monté sur l'hôte :
mkdir -p honeypot-logs
docker run -d --name reditrap \
-p 6379:6379 \
-v "$(pwd)/honeypot-logs:/data" \
reditrap
Le conteneur utilise par défaut --host 0.0.0.0 --port 6379 --log-file /data/redis-honeypot-events.ndjson, donc les journaux arrivent sur l'hôte à honeypot-logs/redis-honeypot-events.ndjson.
Podman fonctionne de la même manière (ajoutez le drapeau SELinux si applicable) :
podman run -d --name reditrap \
-p 6379:6379 \
-v "$(pwd)/honeypot-logs:/data:Z" \
reditrap
Remplacez les valeurs par défaut en ajoutant des arguments après le nom de l'image, par exemple :
docker run --rm -p 6379:6379 reditrap --redis-version 7.0.15 --log-file /data/attempts.ndjson
Chaque requête entrante devient une entrée NDJSON. L'activité Lua suspecte inclut des heuristiques pour faciliter le triage. Par exemple :
{
"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"
}
Associez les journaux à la télémétrie réseau pour tracer la source de l'attaque et décider des actions de réponse.