
एक रीड-ओनली, पैसिव स्कैनर जो किसी REDCap होस्ट की **CVE-2026-90817** के प्रति एक्सपोज़र और उससे समझौते की जाँच करता है — यह अनऑथेंटिकेटेड सर्वे-एंडपॉइंट रिमोट-कोड-एक्ज़ीक्यूशन फ्लॉ है जिसका दुरुपयोग Palo Alto Unit 42 द्वारा प्रलेखित XMRig क्रिप्टोमाइनिंग अभियान द्वारा किया गया
redcap_cve_2026_90817_scan.py एक read-only, passive स्कैनर है जो किसी
REDCap होस्ट की CVE-2026-90817 के प्रति एक्सपोज़र और कम्प्रोमाइज़ की जाँच करता है — यह वही
अनऑथेंटिकेटेड सर्वे-एंडपॉइंट रिमोट-कोड-एक्ज़ीक्यूशन दोष है जिसका दुरुपयोग XMRig
क्रिप्टोमाइनिंग अभियान द्वारा किया गया, जिसे Palo Alto Unit 42 द्वारा प्रलेखित किया गया है
(2026-10-07-XMRig-campaign-through-CVE-2026-90817)।
यह उस होस्ट के बारे में दो प्रश्नों का उत्तर देता है जिस पर इसे चलाया जाता है:
यह टूल केवल डिटेक्शन के लिए है। यह:
यह एक एडमिनिस्ट्रेटर के लिए है जो इसे अपने ही REDCap सर्वर के विरुद्ध चलाता है।
pip इंस्टॉल नहीं। एक ही फ़ाइल; इसे
होस्ट पर कॉपी करें और चलाएँ।/var/log/apache2 (Debian) या /var/log/httpd
(RHEL/CentOS/Rocky/Alma) पर स्वतः स्कैन किए जाते हैं, और nginx /var/log/nginx पर। RHEL 8 पर सिस्टम
python3 3.6 है, इसलिए वहाँ python3.9 (या नया) आमंत्रित करें; RHEL/Rocky/Alma 9
में 3.9+ शामिल है। पूर्ण स्कैन के लिए root के रूप में चलाएँ (प्रति-उपयोगकर्ता crontabs, अन्य उपयोगकर्ताओं के
authorized_keys और /proc/<pid>/exe, और कुछ लॉग अन्यथा
अपठनीय होते हैं)। root के बिना भी यह चलता है और परिणाम को स्पष्ट रूप से
आंशिक स्कैन के रूप में चिह्नित करता है।# Simplest: defaults to /var/www/html/redcap, auto-detects the mitigation date
sudo python3 -I redcap_cve_2026_90817_scan.py
# Point at a non-default install, pin the mitigation date, list every attack entry
sudo python3 -I redcap_cve_2026_90817_scan.py \
--redcap-root /var/https/redcap \
--mitigation-date 2026-09-21 \
--max-log-matches all
# Machine-readable output for monitoring / ticketing
sudo python3 -I redcap_cve_2026_90817_scan.py --json
Windows पर, एक elevated prompt से चलाएँ और --redcap-root को इंस्टॉल की ओर इंगित करें (platform और डिफ़ॉल्ट log dirs स्वतः पहचाने जाते हैं):
# IIS or Apache/XAMPP; logs under C:\inetpub\logs\LogFiles or the Apache logs dir
python -I redcap_cve_2026_90817_scan.py --redcap-root C:\redcap --json
-I Python को isolated mode में चलाता है ($PYTHONPATH और CWD को अनदेखा करता है) — संभवतः छेड़छाड़ किए गए host को scan करते समय यह अच्छी hygiene है।
| Flag | डिफ़ॉल्ट | उद्देश्य |
|---|---|---|
--redcap-root PATH | /var/www/html/redcap | REDCap install root। |
--log-dir DIR (repeatable) | platform-specific (Linux पर Apache/nginx; Windows पर IIS LogFiles + Apache) | scan करने के लिए web-server log directories (rotated .gz और IIS W3C logs को संभालता है)। |
--home-dir DIR (repeatable) | /root + प्रत्येक /home/* (Linux); प्रत्येक C:\Users\* (Windows) | SSH keys / shell/profile files के लिए scan करने हेतु अतिरिक्त home dirs। |
--platform auto|linux|windows | auto | मान लिया जाने वाला host platform। OS से auto-detect करता है; provider चुनने के लिए इसे force करें (OS-specific host probes अभी भी केवल मेल खाते live OS पर ही चलते हैं)। |
--mitigation-date YYYY-MM-DD | auto-detected | वह तिथि जब upgrade करके vulnerability बंद की गई थी। देखें Attack timing। |
--since YYYY-MM-DD | — | केवल इस तिथि को या इसके बाद की (inclusive) web-log entries की जाँच करें। इससे पहले अंतिम बार modified log files नहीं खोली जाती हैं। दोनों log passes पर लागू होता है; host-state checks अप्रभावित रहते हैं। देखें Attack timing। |
--until YYYY-MM-DD | — | केवल इस तिथि को या इससे पहले की (inclusive) web-log entries की जाँच करें। |
--full-hash-scan | off | temp/cache और staging dirs के अंतर्गत files को recursively hash करें (धीमा)। |
--max-log-matches N | all | 100 | प्रति category कितनी attack log entries सूचीबद्ध करनी हैं, verbatim रखी जाती हैं। |
--attacker-ip IP (repeatable) | — | अतिरिक्त ज्ञात attacker IP (जैसे किसी अन्य host के scan से)। documented IOC IP की तरह व्यवहार किया जाता है। देखें Second pass। |
--json | off | text report के बजाय JSON emit करें। |
--quiet | off | text output में OK/INFO lines को suppress करें। |
| Code | अर्थ |
|---|---|
0 | Clean और patched, और scan पूरी तरह पूर्ण हुआ। |
1 | एक या अधिक findings (vulnerable version और/या IOC/attack) — जाँच करें। |
2 | Scan पूरी तरह पूर्ण नहीं हो सका (errors, या unprivileged और अन्यथा clean — clean परिणाम को पूरी तरह सिद्ध नहीं किया जा सका)। |
प्रत्येक documented IOC एक passive local check से मेल खाता है:
redcap_vX.Y.Z directory names से installed version पढ़ता है और patched releases (16.0.49 LTS / 17.3.10 LTS / 17.4.4 Standard; affected floor 13.3.0) से तुलना करता है।temp/cache में known-bad files — वहाँ की प्रत्येक file (और staging dirs में) को Unit 42 dropper SHA-256 के विरुद्ध hash किया जाता है। ध्यान दें: tool .bladec extension के आधार पर files को flag नहीं करता। REDCap core BladeOne template engine का उपयोग करता है, जो सामान्य output के रूप में hash-named .bladec compiled templates को temp/cache में लिखता है, इसलिए यह extension compromise का संकेतक नहीं है; वास्तव में malicious dropped file को उसके content hash से पकड़ा जाता है, चाहे उसका extension कोई भी हो।.syslog-* dirs, xmrig* archives, और competitor directories (/dev/shm/duet, /var/tmp/.bin) जिन्हें campaign perms 000 पर lock करता है।/var/tmp, /dev/shm, /tmp से चल रहे executables, और syslog-ng-* masquerading processes।127.0.0.1:50001 पर local XMRig JSON-RPC API, और attacker source IP(s) से live connections — documented one, observed ones, कोई भी --attacker-ip, और web-log check द्वारा खोजा गया प्रत्येक IP।authorized_keys — attacker के backdoor fingerprint से मेल खाती keys। (यह जानबूझकर "review" के लिए असंबंधित keys को सूचीबद्ध नहीं करता — सामान्य host पर वे वास्तविक accounts की होती हैं और स्वतंत्र रूप से सत्यापन योग्य नहीं होतीं।)~/.profile — injected startup code और HISTFILE anti-forensics।__passthru और route= अपने आप में वैध REDCap पैरामीटर हैं —
External Modules __passthru के माध्यम से रूट होते हैं, और सामान्य सर्वेक्षण ट्रैफ़िक
PdfController और SendItController जैसे बिनाइन कंट्रोलर तक पहुँचने के लिए एक सादा
__passthru=index.php का उपयोग करता है। इसलिए स्कैनर कभी भी अकेले इन पर मैच नहीं करता। एक लॉग लाइन
को exploit-shaped तभी माना जाता है जब वह दर्शाती है: