
न्यूनतम Redis हनीपॉट जो RediShell (CVE-2025-49844) शोषण का पता लगाता है।
RediTrap एक न्यूनतम Redis हनीपॉट है जिसे CVE-2025-49844 ("RediShell") का दोहन करने के शुरुआती प्रयासों का पता लगाने के लिए तैयार किया गया है, जो Wiz Research द्वारा वर्णित गंभीर रिमोट कोड निष्पादन (Remote Code Execution) भेद्यता है। यह एक्सप्लॉइट एम्बेडेड Lua इंजन में 13 साल पुराने use-after-free बग का दुरुपयोग करता है: Redis Lua चंक का नाम पहले स्टैक पर एंकर किए बिना संग्रहीत करता था, जिससे कचरा संग्रहण (garbage collection) चक्र स्ट्रिंग को पुनः प्राप्त कर सकता था जबकि C कोड अभी भी पॉइंटर का उपयोग कर रहा था। Redis पैच
d5728cb
इस समस्या को Lua स्टैक पर चंक का नाम पुश करके (setsvalue2s/incr_top के माध्यम से) पार्सिंग से पहले और बाद में पॉप करके ठीक करता है, जिससे स्टेल पॉइंटर रुकता है और RCE प्रिमिटिव बंद हो जाता है।
क्योंकि प्रकाशित एक्सप्लॉइट पथ EVAL, EVALSHA, या SCRIPT LOAD के माध्यम से दुर्भावनापूर्ण Lua स्क्रिप्ट भेजने पर निर्भर करता है, हनीपॉट उन इंटरैक्शन को सतह पर लाने पर केंद्रित है जबकि यह एक अनपैच्ड Redis नोड होने का दिखावा करता है।
6379 डिफ़ॉल्ट रूप से) पर सुनता है और एक छोटा RESP सबसेट बोलता है ताकि बुनियादी प्रोब सफल हों (PING, INFO, AUTH, आदि)।HELLO को अस्वीकार करना) ताकि हमलावरों को अपना कार्यप्रवाह जारी रखने के लिए प्रोत्साहित किया जा सके।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"
}
हमलावर स्रोत का पता लगाने और प्रतिक्रिया कार्रवाई तय करने के लिए लॉग को नेटवर्क टेलीमेट्री के साथ जोड़ें।