پایگاه دانش

هشدار استفاده از تکنیک HTTP/2 Continuation FLOOD در حملات DOS

محققان درباره آسیب‌پذیری HTTP/2 Continuation Flood جدید هشدار می‌دهند که می‌تواند برای انجام حملات قدرتمند Denial-of-Service (DoS) مورد سواستفاده قرار گیرد. ‌ پیام‌های HTTP می‌توانند شامل فیلد‌های نام‌گذاری شده در هر دو بخش هدر و تریلر باشند. کارشناسان CERT/CC توضیح دادند که هر دو فیلد هدر و تریلر به عنوان بلوک‌های فیلد در HTTP/2 سریال‌سازی می‌شوند تا آنها را در چند بخش به پیاده‌سازی هدف منتقل کنند. بسیاری از پیاده‌سازی‌های HTTP/2 به درستی محدود کردن یا پاکسازی تعداد فریم‌های CONTINUATION ارسال شده در یک جریان را بررسی نمی‌کنند. یک مهاجم می‌تواند با ارسال جریانی از فریم‌های CONTINUATION از این مشکل سواستفاده کند. این فریم‌ها ممکن است به لیست سرصفحه در حافظه اضافه نشوند، اما همچنان توسط سرور پردازش و رمزگشایی می‌شوند و به طور بالقوه باعث خرابی در خارج از حافظه (OOM) می‌شوند. ‌ تکنیک حمله HTTP/2 نیز CONTINUATION Flood نامگذاری شده و محقق بارتک نووتارسکی این موضوع را در 25 ژانویه 2024 به مرکز هماهنگی CERT گزارش کرد. ‌ توصیه‌های منتشر شده توسط CERT/CC می‌گوید: “فریم‌های HTTP/2 CONTINUATION برای ادامه دنباله‌ای از قطعات بلوک فیلد استفاده می‌شود. آنها به منظور تقسیم بلوک‌های هدر در چندین فریم استفاده می‌شوند. دو نوع دیگر از قطعات بلوک هدر HEADERS یا PUSH_PROMISE هستند. فریم‌های CONTINUATION را می‌توان برای ادامه یک قطعه بلوک هدر که توسط فریم‌های HEADERS یا PUSH_PROMISE منتقل نمی‌شود، استفاده کرد. یک بلوک هدر زمانی تکمیل شده در نظر گرفته می‌شود که سرور یک اعلان مجموعه END_HEADERS را دریافت کند. این برای نشان دادن این امر است که هیچ فریم دیگری غیر از CONTINUATION، HEADERS یا PUSH_PROMISE وجود ندارد. یک آسیب‌پذیری در چند پیاده‌سازی کشف شده است که تعداد فریم‌های CONTINUATION که می‌توان در یک جریان ارسال کرد را محدود نمی‌کند”. ‌ نووتارسکی توضیح داد که CONTINUATION Flood یک کلاس از آسیب‌پذیری‌ها در چندین پیاده‌سازی پروتکل HTTP/2 است. در مقایسه با تنظیم Rapid Reset، آسیب‌پذیری CONTINUATION Flood تاثیر شدیدتری روی یک دستگاه دارد. محققان خاطرنشان کردند که این پتانسیل می‌تواند در دسترس بودن سرور را مختل کرده و باعث خرابی سرور و کاهش عملکرد آن شود. ‌ در زیر نقصی که بر پیاده‌سازی‌های مختلف تاثیر می‌گذارد آورده شده است. ‌ آسیب‌پذیری CVE-2024-27983: یک مهاجم می‌تواند سرور Node.js HTTP/2 را با ارسال مقدار اندکی بسته فریم HTTP/2 با چند فریم HTTP/2 در داخل آن، سرور را از دسترس خارج کند. زمانی که هدر‌ها با فریم HTTP/2 CONTINUATION به سرور ارسال می‌شوند و سپس اتصال TCP به طور ناگهانی توسط کلاینت بسته می‌شود و در‌حالی‌که فریم‌های هدر هنوز در حال پردازش (و ذخیره) هستند، می‌توان برخی از داده‌ها را در حافظه nghttp2 باقی گذاشت که باعث ایجاد شرایط race می‌شود. ‌ آسیب‌پذیری CVE-2024-27919: کدک oghttp Envoy درخواست را هنگامی که از محدودیت‌های نقشه هدر فراتر رفته است بازنشانی نمی‌کند. این به مهاجم اجازه می‌دهد تا دنباله‌ای از فریم‌های CONTINUATION را بدون مجموعه بیت END_HEADERS ارسال کند که باعث مصرف نامحدود حافظه می‌شود. ‌ آسیب‌پذیری CVE-2024-2758: محدودیت‌های نرخ Tempesta FW به طور پیش‌فرض فعال نیستند. آنها یا برای گرفتن حملات فریم‌های خالی CONTINUATION بسیار بزرگ هستند یا برای رسیدگی مناسب به درخواست‌های HTTP معمولی بسیار کوچک هستند. ‌ آسیب‌پذیری CVE-2024-2653: در این مورد، amphp/http فریم‌های HTTP/2 CONTINUATION را در یک بافر نامحدود جمع‌آوری می‌کند و تا زمانی که اعلان END_HEADERS را دریافت نکرده باشد، محدودیت اندازه هدر را بررسی نمی‌کند و منجر به خرابی OOM می‌شود. amphp/http-client و amphp/http-server به طور غیرمستقیم تحت تاثیر قرار می‌گیرند اگر با یک نسخه اصلاح نشده amphp/http استفاده شوند. نسخه‌های اولیه amphp/http-client با پشتیبانی HTTP/2 (v4.0.0-rc10 تا 4.0.0) نیز مستقیما تحت تاثیر قرار می‌گیرند. ‌ آسیب‌پذیری CVE-2023-45288: پکیج‌های Go net/http و net/http2 تعداد فریم‌های CONTINUATION خوانده شده برای درخواست HTTP/2 را محدود نمی‌کنند، که به مهاجم اجازه می‌دهد تا مجموعه بزرگی از هدر‌ها را برای یک درخواست ارائه دهد؛ که خوانده شده، رمزگشایی می‌شود و متعاقبا دور ریخته می‌شود، که ممکن است منجر به مصرف بیش‌از‌حد CPU شود. ‌ آسیب‌پذیری CVE-2024-28182: پیاده‌سازی با استفاده از لایبرری nghttp2 همچنان فریم‌های CONTINUATION را دریافت می‌کند و برنامه را تا قبل از تنظیم مجدد جریان، که امکان مشاهده این اطلاعات را فراهم کند و منجر به DoS شود، بازخوانی نمی‌کند. ‌ آسیب‌پذیری CVE-2024-27316: فریم‌های HTTP/2 CONTINUATION بدون مجموعه اعلان END_HEADERS می‌توانند در یک جریان مداوم توسط یک مهاجم به یک پیاده‌سازی Httpd Apache ارسال شوند، که به درستی درخواست را زودتر خاتمه نمی‌دهد. ‌ آسیب‌پذیری CVE-2024-31309: در HTTP/2 CONTINUATION، حمله DoS می‌تواند باعث شود که سرور ترافیک آپاچی منابع بیشتری را روی سرور مصرف کند. این آسیب‌پذیری نسخه‌های 8.0.0 تا 8.1.9، از 9.0.0 تا 9.2.3 تحت تاثیر قرار‌گرفته‌اند. ‌ آسیب‌پذیری CVE-2024-30255: استک پروتکل HTTP/2 در نسخه‌های Envoy 1.29.2 یا قبل از آن در برابر فرسودگی CPU به دلیل سیل فریم‌های CONTINUATION آسیب‌پذیر هستند. کدک HTTP/2 Envoys به کلاینت اجازه می‌دهد تا تعداد نا‌محدودی از فریم‌های CONTINUATION را حتی پس از فراتر رفتن از محدودیت‌های نقشه هدر Envoys ارسال کند. این امر به مهاجم اجازه می‌دهد تا دنباله‌ای از فریم‌های CONTINUATION بدون مجموعه بیت END_HEADERS که باعث استفاده از CPU می‌شود، ارسال کند و تقریبا 1 هسته در هر 300 مگابیت بر ثانیه ترافیک مصرف می‌کند. ‌ مجموعه CERT/CC تاکید کرد که ممکن است تجزیه و تحلیل ترافیک ورودی برای شناسایی تلاش‌های بهره‌برداری دشوار باشد زیرا درخواست HTTP به درستی تکمیل نشده است. ‌ آنها افزودند: “تجزیه و تحلیل ترافیک HTTP خام ممکن است برای تعیین حمله‌ای که از این آسیب‌پذیری استفاده می‌کند، ضروری باشد”.
زمان تقریبی مطالعه: 6 دقیقه

موارد اخیر

برترین ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *