تم تحديد 2 ثغرات أمنية في DoS في التطبيقات المختلفة لبروتوكول HTTP/8

باحثون من Netflix وGoogle مكشوف توجد ثماني ثغرات أمنية في التطبيقات المختلفة لبروتوكول HTTP/2 والتي يمكن أن تتسبب في رفض الخدمة عن طريق إرسال دفق من طلبات الشبكة بطريقة معينة. تؤثر المشكلة على معظم خوادم HTTP التي تدعم HTTP/2 إلى حد ما وتؤدي إلى نفاد ذاكرة العامل أو إنشاء حمل كبير جدًا على وحدة المعالجة المركزية. التحديثات التي تقضي على نقاط الضعف معروضة بالفعل في نجينكس 1.16.1/1.17.3 и ماء 2، لكن الان غير متوفره لأباتشي httpd و منتجات اخرى.

نتجت المشاكل عن التعقيدات المقدمة في بروتوكول HTTP/2 المرتبطة باستخدام الهياكل الثنائية، ونظام للحد من تدفق البيانات داخل الاتصالات، وآلية تحديد أولويات التدفق، ووجود رسائل تحكم تشبه ICMP تعمل عند اتصال HTTP/2 المستوى (على سبيل المثال، إعدادات ping وإعادة التعيين والتدفق). العديد من التطبيقات لم تحد بشكل صحيح من تدفق رسائل التحكم، ولم تدير قائمة انتظار الأولوية بكفاءة عند معالجة الطلبات، أو استخدمت تطبيقات دون المستوى الأمثل لخوارزميات التحكم في التدفق.

تتلخص معظم أساليب الهجوم المحددة في إرسال طلبات معينة إلى الخادم، مما يؤدي إلى توليد عدد كبير من الاستجابات. إذا لم يقرأ العميل البيانات من المقبس ولم يغلق الاتصال، فسيتم ملء قائمة انتظار التخزين المؤقت للاستجابة على جانب الخادم بشكل مستمر. يؤدي هذا السلوك إلى إنشاء حمل على نظام إدارة قائمة الانتظار لمعالجة اتصالات الشبكة، ويؤدي، وفقًا لميزات التنفيذ، إلى استنفاد الذاكرة المتوفرة أو موارد وحدة المعالجة المركزية.

نقاط الضعف التي تم تحديدها:

  • CVE-2019-9511 (Data Dribble) - يطلب المهاجم كمية كبيرة من البيانات إلى سلاسل عمليات متعددة عن طريق التلاعب بحجم النافذة المنزلقة وأولوية الخيط، مما يجبر الخادم على وضع البيانات في قائمة انتظار في كتل بحجم 1 بايت؛
  • CVE-2019-9512 (Ping Flood) - يقوم أحد المهاجمين بإفساد رسائل ping بشكل مستمر عبر اتصال HTTP/2، مما يتسبب في تدفق قائمة الانتظار الداخلية للاستجابات المرسلة على الجانب الآخر؛
  • CVE-2019-9513 (Resource Loop) - يقوم المهاجم بإنشاء سلاسل طلبات متعددة ويغير أولوية سلاسل الرسائل بشكل مستمر، مما يؤدي إلى تبديل شجرة الأولوية عشوائيًا؛
  • CVE-2019-9514 (Reset Flood) - يقوم المهاجم بإنشاء سلاسل رسائل متعددة
    ويرسل طلبًا غير صالح من خلال كل مؤشر ترابط، مما يتسبب في قيام الخادم بإرسال إطارات RST_STREAM، لكنه لا يقبلها لملء قائمة انتظار الاستجابة؛

  • CVE-2019-9515 (تدفق الإعدادات) - يرسل المهاجم دفقًا من إطارات "الإعدادات" الفارغة، ردًا على ذلك يجب على الخادم الإقرار باستلام كل طلب؛
  • CVE-2019-9516 (0-Length Headers Leak) - يرسل المهاجم دفقًا من الرؤوس ذات اسم فارغ وقيمة فارغة، ويخصص الخادم مخزنًا مؤقتًا في الذاكرة لتخزين كل رأس ولا يحرره حتى تنتهي الجلسة ;
  • CVE-2019-9517 (التخزين المؤقت للبيانات الداخلية) - يفتح المهاجم
    نافذة انزلاقية HTTP/2 للخادم لإرسال البيانات دون قيود، ولكنها تبقي نافذة TCP مغلقة، مما يمنع كتابة البيانات فعليًا إلى المقبس. بعد ذلك، يرسل المهاجم طلبات تتطلب استجابة كبيرة؛

  • CVE-2019-9518 (تدفق الإطارات الفارغة) - يرسل المهاجم دفقًا من الإطارات من النوع DATA أو HEADERS أو CONTINUATION أو PUSH_PROMISE، ولكن مع حمولة فارغة وبدون علامة إنهاء التدفق. يقضي الخادم وقتًا في معالجة كل إطار، بشكل غير متناسب مع النطاق الترددي الذي يستهلكه المهاجم.

المصدر: opennet.ru

إضافة تعليق