CVE-2026-90817 — REDCap Survey Passthru + Data Import RCE
أداة فحص بلغة Python 3 (وخطاف استغلال قابل للتكوين) لـ CVE-2026-90817 (Securifera / Ryan Wincey).
| |
|---|
| المنتج | REDCap (Vanderbilt) |
| المتأثر | ≥ 13.3.0 (حتى تصحيح الفرع) |
| المُصلَح | 16.0.49 LTS، 17.3.10 LTS، 17.4.4 Standard+ |
| CVSS 3.1 | 9.8 حرج |
| المصادقة | لا شيء — يلزم hash استبيان عام صالح (s=) للسلسلة الكاملة |
| CWE | CWE-73، CWE-94 |
الملخص
من سياق استبيان عام، يمكن للمهاجمين استغلال توجيه __passthru (تمرير الاستبيان) للوصول إلى وحدات تحكم غير مقصودة (مثل Data Import)، ثم إثارة معالجة غير آمنة لـ مسار الملف / التدفق → RCE.
لم تنشر Securifera بعد سلسلة HTTP الكاملة (لا يوجد PoC عام على GitHub / Exploit-DB وقت نشر المستودع).
exploit_chain.example.json هو عنصر نائب فقط (مسارات/معاملات مُخمَّنة). لن ينفذ RCE.
تشغيل بحثي تجريبي: --allow-placeholder-chain (يرسل الطلبات؛ توقّع الفشل).
المتطلبات
- Python 3.9+
pip install -r requirements.txt
الاستخدام
pip install -r requirements.txt
# Single target (survey hash required for survey + passthru tests)
python poc.py -u https://redcap.example.edu/redcap --hash Ab12Xy34Zq --mode check
# Shorthand: base|hash
python poc.py -u "https://redcap.example.edu/redcap|Ab12Xy34Zq" --mode check
# Mass check (one URL per line, optional |hash)
python poc.py --list targets.example.txt --mode check -j 20 -q
# Live stream: every host + test summary (recommended for long lists)
python poc.py --list targets.example.txt --mode check -j 20 -q --flow
# Exploit (after advisory → real exploit_chain.json)
cp exploit_chain.example.json exploit_chain.json # edit with real values
python poc.py -u https://redcap.example.edu/redcap --hash XXX --mode exploit -c id \
--chain exploit_chain.json
FOFA export → target list
# Place export as fofa_csv_7561.csv (or any fofa*.csv), then:
python fofa_to_list.py
# Writes list.txt (gitignored) and normalizes the CSV with a url column
python poc.py --list list.txt --mode check -j 20 -q --flow
صيغة قائمة الأهداف
https://uni.edu/redcap|SurveyHash10
https://uni.edu/redcap?s=SurveyHash10
https://uni.edu/redcap
بدون hash، لا يزال الفحص قادرًا على أخذ بصمة REDCap وتمييز نوافذ الإصدارات، لكنه لا يستطيع التحقق من الاستبيان أو تشغيل فحوصات passthru.
لقطة شاشة (--flow فحص جماعي)

خيارات CLI
المخرجات (فحص جماعي)
| الملف | المحتوى |
|---|
cve_2026_90817_results.jsonl | JSON لكل هدف |
hits.txt | المرشحون (exploitable_candidate) |
قيم status الشائعة (فحص)
القيود
- الاستغلال يتطلب مسار
__passthru الدقيق وأسماء المعاملات من Securifera/المورّد؛ الإعدادات الافتراضية عناصر نائبة.
- تخفي العديد من النسخ سلاسل الإصدار؛ قد يكون
vulnerable_version بقيمة null.
- صفوف FOFA
title="REDCap" غالبًا ما تفتقر إلى hashes الاستبيان — تتطلب شروط CVE المسبقة s= من روابط عامة.
- اختبار مصرّح به فقط.
تلميحات FOFA / الاكتشاف
title="REDCap"
body="redcap_version"
body="/surveys/?s="
هيكل المستودع
.
├── poc.py
├── fofa_to_list.py
├── exploit_chain.example.json
├── poc.png # example --flow terminal output
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore
المراجع
قانوني
لـ اختبار الأمان المصرّح به فقط. أنت مسؤول عن الامتثال للقوانين المعمول بها وقواعد البرنامج.