2 آسیب پذیری DoS در پیاده سازی های مختلف پروتکل HTTP/8 شناسایی شده است.

محققان نتفلیکس و گوگل آشکار کرد هشت آسیب‌پذیری در پیاده‌سازی‌های مختلف پروتکل HTTP/2 وجود دارد که می‌توانند با ارسال جریانی از درخواست‌های شبکه به روشی خاص، باعث انکار سرویس شوند. این مشکل اکثر سرورهای HTTP با پشتیبانی HTTP/2 را تا حدودی تحت تاثیر قرار می دهد و منجر به اتمام حافظه یا ایجاد بار بیش از حد CPU می شود. به‌روزرسانی‌هایی که آسیب‌پذیری‌ها را از بین می‌برند قبلاً در ارائه شده‌اند nginx 1.16.1/1.17.3 и H2O 2.2.6، اما در حال حاضر غیر قابل دسترسی برای آپاچی httpd و محصولات دیگر.

مشکلات ناشی از پیچیدگی های وارد شده به پروتکل HTTP/2 مرتبط با استفاده از ساختارهای باینری، سیستمی برای محدود کردن جریان داده در اتصالات، مکانیسم اولویت بندی جریان، و وجود پیام های کنترلی ICMP مانند که در اتصال HTTP/2 کار می کنند. سطح (به عنوان مثال، تنظیمات پینگ، تنظیم مجدد و جریان). بسیاری از پیاده‌سازی‌ها جریان پیام‌های کنترلی را به‌درستی محدود نمی‌کنند، صف اولویت‌ها را در هنگام پردازش درخواست‌ها به‌طور مؤثر مدیریت نمی‌کنند، یا از پیاده‌سازی‌های غیربهینه الگوریتم‌های کنترل جریان استفاده می‌کنند.

بیشتر روش‌های حمله شناسایی‌شده به ارسال درخواست‌های خاص به سرور منجر می‌شود که منجر به تولید تعداد زیادی پاسخ می‌شود. اگر مشتری داده ها را از سوکت نخواند و اتصال را نبندد، صف بافر پاسخ در سمت سرور به طور مداوم پر می شود. این رفتار باری را بر روی سیستم مدیریت صف برای پردازش اتصالات شبکه ایجاد می کند و بسته به ویژگی های پیاده سازی، منجر به فرسودگی حافظه موجود یا منابع CPU می شود.

آسیب پذیری های شناسایی شده:

  • CVE-2019-9511 (Data Dribble) - یک مهاجم با دستکاری اندازه پنجره کشویی و اولویت رشته، حجم زیادی از داده را در رشته های مختلف درخواست می کند و سرور را مجبور می کند که داده ها را در بلوک های 1 بایتی در صف قرار دهد.
  • CVE-2019-9512 (Ping Flood) - یک مهاجم به طور مداوم پیام های پینگ را از طریق اتصال HTTP/2 مسموم می کند و باعث ایجاد صف داخلی پاسخ های ارسالی به سیل در طرف دیگر می شود.
  • CVE-2019-9513 (حلقه منبع) - یک مهاجم چندین رشته درخواست ایجاد می کند و به طور مداوم اولویت رشته ها را تغییر می دهد و باعث می شود درخت اولویت به هم بخورد.
  • CVE-2019-9514 (Reset Flood) - یک مهاجم چندین رشته ایجاد می کند
    و یک درخواست نامعتبر از طریق هر رشته ارسال می کند و باعث می شود سرور فریم های RST_STREAM را ارسال کند، اما آنها را برای پر کردن صف پاسخ نمی پذیرد.

  • CVE-2019-9515 (Settings Flood) - مهاجم جریانی از فریم های خالی «SETTINGS» را ارسال می کند که در پاسخ به آن سرور باید دریافت هر درخواست را تأیید کند.
  • CVE-2019-9516 (نشت سرصفحه 0-طول) – مهاجم جریانی از هدرها را با نام پوچ و مقدار تهی ارسال می کند و سرور یک بافر در حافظه برای ذخیره هر سرصفحه اختصاص می دهد و تا پایان جلسه آن را آزاد نمی کند. ;
  • CVE-2019-9517 (بافر داده های داخلی) - مهاجم باز می شود
    پنجره کشویی HTTP/2 برای سرور برای ارسال داده ها بدون محدودیت، اما پنجره TCP را بسته نگه می دارد و از نوشتن داده ها در سوکت جلوگیری می کند. در مرحله بعد، مهاجم درخواست هایی را ارسال می کند که نیاز به پاسخ بزرگ دارند.

  • CVE-2019-9518 (سیل فریم های خالی) - مهاجم جریانی از فریم ها از نوع DATA، HEADERS، CONTINUATION یا PUSH_PROMISE را ارسال می کند، اما با بار خالی و بدون پرچم پایان جریان. سرور زمانی را صرف پردازش هر فریم می کند، که متناسب با پهنای باند مصرفی مهاجم نیست.

منبع: opennet.ru

اضافه کردن نظر