
最小限のRedisハニーポットで、RediShell(CVE-2025-49844)のエクスプロイトを検出します。
RediTrapは、Wiz Researchが報告した重大なリモートコード実行(RCE)脆弱性であるCVE-2025-49844(「RediShell」)を悪用する初期の試みを検出するために特化した、最小限のRedisハニーポットです。このエクスプロイトは、組み込みLuaエンジンにおける13年前のuse-after-freeバグを悪用します。RedisはLuaチャンク名をスタック上に固定せずに保存するため、Cコードがポインタを使用している間にガベージコレクションサイクルが文字列を回収できてしまいます。Redisのパッチ
d5728cb
は、解析前にチャンク名をLuaスタックにプッシュし(setsvalue2s/incr_top経由)、解析後にポップすることでこの問題を修正し、古いポインタを防いでRCEプリミティブを封鎖します。
公開されたエクスプロイト経路はEVAL、EVALSHA、またはSCRIPT LOADを介して悪意のあるLuaスクリプトを送信することに依存しているため、このハニーポットは未パッチのRedisノードを装いながら、これらのやり取りを表面化することに焦点を当てています。
6379)で待ち受け、基本的なプローブが成功するように小さなRESPサブセットを話します(PING、INFO、など)。AUTHHELLOの拒否)を模倣します。python3 reditrap.py --host 0.0.0.0 --port 6379 --log-file logs/redis-honeypot-events.ndjson
開発中に追加のstdoutログを取得するには--verboseを使用します。
コンパクトなイメージ(Alpineベース)をビルドします:
docker build -t reditrap .
# または: podman build -t reditrap .
Redisポートを公開し、ログディレクトリをホストにマウントして実行します:
mkdir -p honeypot-logs
docker run -d --name reditrap \
-p 6379:6379 \
-v "$(pwd)/honeypot-logs:/data" \
reditrap
コンテナはデフォルトで--host 0.0.0.0 --port 6379 --log-file /data/redis-honeypot-events.ndjsonを使用するため、ログはホストの
honeypot-logs/redis-honeypot-events.ndjsonに保存されます。
Podmanも同様に動作します(該当する場合はSELinuxフラグを追加):
podman run -d --name reditrap \
-p 6379:6379 \
-v "$(pwd)/honeypot-logs:/data:Z" \
reditrap
イメージ名の後に引数を追加してデフォルトを上書きします。例:
docker run --rm -p 6379:6379 reditrap --redis-version 7.0.15 --log-file /data/attempts.ndjson
受信した各リクエストはNDJSONエントリになります。疑わしいLuaアクティビティには、トリアージを容易にするためのヒューリスティックが含まれます。例:
{
"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"
}
ログをネットワークテレメトリと組み合わせて、攻撃元を追跡し、対応アクションを決定します。