
سكريبتات Suricata LUA لكشف عن CVE-2019-12255 و CVE-2019-12256 و CVE-2019-12258 و CVE-2019-12260
نصوص Suricata LUA لكشف الثغرات CVE-2019-12255 وCVE-2019-12256 وCVE-2019-12258 وCVE-2019-12260
يتحقق النص من الثغرة CVE-2019-12255، حيث يجب أن تحتوي الحزمة التي يتم فحصها على العلامات PSH وACK وURG وأن يتجاوز حجم الحمولة 1500 بايت. ثم يتحقق مما إذا كانت قيمة المؤشر العاجل (urgent pointer) مضبوطة على 0، مما يسبب تدفقًا سفليًا للأعداد الصحيحة (integer underflow) على الأجهزة المعرضة للخطر.
يعتمد الاستغلال على تدفق المؤشر العاجل سفليًا عن طريق ضبطه على 0. يؤدي هذا الخلل إلى تجاهل قيد الطول في دالة recv() الخاصة بالهدف، مما ينسخ جميع البيانات المتاحة من نافذة TCP إلى المخزن المؤقت الذي قدمه المستخدم. تتحقق القاعدة مما إذا كانت الحمولة تتجاوز 1500 بايت.
يتحقق النص من الثغرة CVE-2019-12256، حيث تتكون الحزمة التي يتم فحصها من خيارين LSRR أو SSRR في حزمة IP. يمكن التعرف على خيارات LSRR من خلال القيمة السداسية 0x83، وخيارات SSRR من خلال القيمة السداسية 0x89. يتكون الاستغلال من قيم غير صحيحة، حيث يكون الطول أقل من الطول المستخدم عادةً عند تعريف مسار (4 بايت كحد أدنى)، ويتكرر هذا مرتين في الحزمة المرسلة إلى الخادم. ستؤدي خيارات IP التالية إلى تجاوز سعة المكدس (stack overflow) باستخدام خيارات LSRR غير صالحة:
| Type LSRR | Length | LSRR-Pointer | Type LSRR | Length | LSRR-Pointer |
|---|---|---|---|---|---|
| \x83 | \x03 | \x27 | \x83 | \x03 | \x27 |
ستؤدي خيارات IP التالية إلى تجاوز سعة المكدس باستخدام خيارات SSRR غير صالحة:
| Type SSRR | Length | SSRR-Pointer | Type SSRR | Length | SSRR-Pointer |
|---|---|---|---|---|---|
| \x89 | \x03 | \x27 | \x89 | \x03 | \x27 |
يتحقق النص من الثغرة CVE-2019-12258، حيث يتم تمييز الحزم المعنية بتعليق في ملف PCAP. يتم التحقق من الاكتشاف الأول بوجود خيارين لنافذة القياس (window scale)، خيار غير صالح وآخر صالح. في المرة الثانية، يكون النوع الخامل من هجمات الحرمان من الخدمة (DoS) الذي يحمل خيارًا واحدًا غير صالح لنافذة القياس.
يحتوي خيار Window Scale على القيمة 03 للإشارة إلى استخدام هذا الخيار، وذلك عند إزاحة محددة 57 في حزمة TCP. يجب أن تكون قيمة الاستغلال 2 (غير صالحة) لإحداث الاستغلال، وتوجد هذه القيمة عند الإزاحة 58. يتم فحص القيم، وإرجاع 1 (تطابق) في حال تحقق ذلك.
يتحقق النص من الثغرة CVE-2019-12260، حيث تتكون الحزمة التي يتم فحصها من حزمة SYN مشوهة، وتحتوي هذه الحزمة على حقل خيار TCP-AO بقيمة بايت ≤ 3 بايت. يمكن تعيين خيار TCP-AO بالقيمة السداسية 0x29، وفقًا لـ RFC: https://tools.ietf.org/html/rfc5925#page-7
يعتمد الاستغلال على تشويه خيار TCP-AO عن طريق تعيينه إلى أي قيمة أقل من أو تساوي 3 بايت. يمكن التحقق من ذلك بالتأكد من أن القيمة السداسية 0x29 معينة كخيار عند الإزاحة 56.