
اكتشاف آمن لما إذا كانت مثيل FortiGate SSL VPN معرضة لـ CVE-2023-27997 بناءً على توقيت الاستجابة
اكتشف بأمان ما إذا كانت مثيل VPN SSL الخاص بـ FortiGate معرضًا للثغرة CVE-2023-27997 بناءً على توقيت الاستجابة. راجع المقال الكامل في مدونة Bishop Fox، والذي يتضمن شرحًا كاملاً للمنهجية وراء هذه الأداة.
CVE-2023-27997 هي ثغرة تجاوز سعة المخزن المؤقت (heap-based buffer overflow) في مكون SSL VPN الخاص بـ FortiGate، والتي تم إثبات قابلية استغلالها لتنفيذ تعليمات برمجية عن بُعد (RCE) قبل المصادقة. نظرًا لأن هذا خطأ في تلف الذاكرة، يجب أن نتمكن من اكتشاف الإصدارات المعرضة للخطر دون تعطيل عملية sslvpnd وفصل المستخدمين النشطين.
سترسل هذه الأداة 800 طلب إلى مسار URL المعرض للخطر. سيتم رفض نصف الطلبات بواسطة إصدارات FortiGate الأحدث نظرًا لوجود طول غير صحيح؛ وهذا يخلق فرقًا زمنيًا قابلاً للقياس (حوالي 250 ميكروثانية على أجهزتنا أثناء الاختبار) بين الطلبات ذات الأطوال الصالحة وغير الصالحة، والذي يمكننا اكتشافه باستخدام القليل من الحساب.
تم اختيار حجم الطلب وحقول طول البيانات تحديدًا بحيث يؤثر تلف الذاكرة على الأجهزة المعرضة للخطر فقط على المناطق في الكومة التي لا توجد بها بيانات قيد الاستخدام. وهذا يضمن عدم تعطل عملية SSL VPN.
$ git clone https://github.com/BishopFox/CVE-2023-27997-check
$ cd CVE-2023-27997-check
$ python3 -m venv venv
$ source venv/bin/activate
$ python3 -m pip install -r requirements.txt
افحص VPN SSL على https://<IP>:<PORT>. قد يعود الهدف بحالة Vulnerable أو Patched أو Unknown. يكتمل المسح عادةً في أقل من 30 ثانية—ولكن بسبب العدد الكبير من الطلبات المرسلة، قد يستغرق ما يصل إلى 5 دقائق في بعض الظروف.
$ python3 CVE-2023-27997-check.py <IP> <PORT>
في المثال التالي، example.com:10443 معرضة للثغرة CVE-2023-27997.
$ python3 CVE-2023-27997-check.py example.com 10443
Checking https://example.com:10443
Vulnerable
لاحظ أن هذه الأداة تعتمد على معلومات التوقيت المقاسة عبر الإنترنت، والتي تخضع للضوضاء. ستحذرك الأداة عندما تكون النتائج خاطئة.
$ python3 CVE-2023-27997-check.py example.com 10443
Checking https://example.com:10443
WARNING: Low confidence results.
Patched
$ python3 CVE-2023-27997-check.py example.com 10443
Checking https://example.com:10443
WARNING: Low confidence results.
Unknown
إذا كنت ترى WARNING: Low confidence results، ففكر في محاولة تقليل الضوضاء على الإنترنت باستخدام VPS قريب جغرافيًا من الخادم الهدف قدر الإمكان.
استخدام هذه الأداة لمهاجمة أهداف دون موافقة متبادلة مسبقة غير قانوني. تقع على عاتق المستخدم النهائي مسؤولية الامتثال لجميع القوانين المحلية والولائية والاتحادية المعمول بها. لا يتحمل المطورون أي مسؤولية ولا يتحملون مسؤولية أي سوء استخدام أو ضرر ناتج عن هذا البرنامج.