
# فخ Redis بسيط لكشف استغلالات RediShell (CVE-2025-49844)
RediTrap هو honeypot (فخ عسل) لـ Redis مصمم خصيصًا لاكتشاف المحاولات المبكرة لاستغلال
CVE-2025-49844 ("RediShell")، وهي ثغرة تنفيذ الأكواد عن بُعد الحرجة
الموصوفة من قبل Wiz Research. يستغل الاستغلال خطأ use-after-free عمره 13 عامًا في
محرك Lua المدمج: كان Redis يخزن اسم chunk الخاص بـ Lua دون تثبيته أولاً
على المكدس، مما يسمح لدورة جمع القمامة باستعادة
السلسلة بينما كان كود C لا يزال يستخدم المؤشر. تصحيح Redis
d5728cb
يصلح المشكلة عن طريق دفع اسم chunk إلى مكدس Lua (عبر
setsvalue2s/incr_top) قبل التحليل ثم إزالته بعد ذلك، مما يمنع
المؤشر القديم ويغلق بدائية RCE.
نظرًا لأن مسار الاستغلال المنشور يعتمد على إرسال نصوص Lua خبيثة عبر
EVAL أو EVALSHA أو SCRIPT LOAD، يركز honeypot على إظهار
هذه التفاعلات بينما يتظاهر بأنه عقدة Redis غير مصححة.
6379 افتراضيًا) ويتحدث مجموعة فرعية صغيرة من RESP
بحيث تنجح الفحوصات الأساسية ( و و وما إلى ذلك).PINGINFOAUTHHELLO) لتشجيع
المهاجمين على مواصلة سير عملهم.python3 reditrap.py --host 0.0.0.0 --port 6379 --log-file logs/redis-honeypot-events.ndjson
استخدم --verbose لتسجيل إضافي على stdout أثناء التطوير.
قم ببناء صورة مضغوطة (قاعدة 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"
}
قم بإقران السجلات مع بيانات الشبكة لتتبع المصدر المهاجم واتخاذ قرار بشأن إجراءات الاستجابة.