حمله HTTP/2 Bomb چیست؟ کالبدشکافی حمله، تأثیر بر nginx و راهکارهای مقابله

حمله HTTP/2 Bomb چیست؟ کالبدشکافی حمله، تأثیر بر nginx و راهکارهای مقابله

HTTP/2 Bomb یکی از جدیدترین تکنیک‌های حمله مبتنی بر HTTP/2 است که در ژوئن ۲۰۲۶ معرفی شد. این حمله می‌تواند با ترکیب دو مکانیزم استاندارد در پروتکل HTTP/2 مصرف حافظه سرور را افزایش دهد و باعث اختلال در سرویس شود. نکته مهم این است که HTTP/2 Bomb یک آسیب‌پذیری ناشناخته نیست و از ترکیب قابلیت‌هایی استفاده می‌کند که سال‌ها در HTTP/2 وجود داشته‌اند. در این مقاله بررسی می‌کنیم حمله HTTP/2 Bomb چیست و چه تفاوتی با ا دارد، چگونه باعث حمله مصرف حافظه سرور می‌شود و برای جلوگیری از این حمله و مقابله با حملات HTTP/2 چه راهکارهایی ارائه شده است.

آنچه در این مطلب می‌خوانید

خلاصه

HTTP/2 Bomb یک حمله DoS است که با ترکیب HPACK و Flow Control در HTTP/2 باعث مصرف غیرعادی حافظه و کندی شدید یا اختلال سرویس می‌شود. این مشکل بیشتر به نحوه پیاده‌سازی سرویس‌های سرورها مربوط است تا یک باگ مستقل.

نکات کلیدی

  • روش سوءاستفاده، ترکیب HPACK و Flow Control در HTTP/2 است
  • هدف حمله، ایجاد فشار بر حافظه و کندی پایدار است و نه صرفاً ایجاد OOM
  • شدت اثر، وابسته به پیاده‌سازی در nginx، Apache، Envoy و IIS است
  • کنترل‌های ساده هدر، برای مقابله با این حمله کافی نیستند
  • راهکارهای جلوگیری، شامل به‌روزرسانی سرویس‌ها، محدودسازی هدر و stream، استفاده از CDN یا reverse proxy و اعمال memory limit است
  • نتیجه اصلی این است که ترکیب قابلیت‌های استاندارد می‌تواند سناریوی حمله جدید ایجاد کند

چگونه ویژگی‌های HTTP/2 به سطح حمله تبدیل شد؟

پروتکل HTTP/2 با هدف بهبود عملکرد وب و کاهش سربار ارتباطات معرفی شد. قابلیت‌هایی مانند فشرده‌سازی هدرها (HPACK) و کنترل جریان (Flow-Control Window) باعث افزایش سرعت و کاهش مصرف پهنای باند شده‌اند، اما این دو ویژگی در حمله HTTP/2 Bomb توسط مهاجم به ابزار افزایش مصرف حافظه سرور تبدیل می‌شوند. موفقیت HTTP/2 Bomb به این دلیل است که یکی از این قابلیت‌ها حافظه را تخصیص می‌دهد و دیگری مانع آزاد شدن آن می‌شود. نتیجه، انباشت تدریجی حافظه و کاهش پاسخ‌دهی سرور است.

HPACK: یک الگوریتم فشرده‌سازی وضعیت‌دار است که رشته‌های هدر را در یک جدول داینامیک ذخیره می‌کند. در درخواست‌های بعدی، به جای ارسال کامل هدر، تنها یک index ارسال می‌شود. این مکانیزم باعث کاهش سربار هدرها می‌شود، اما در ترکیب با کنترل جریان، مهاجم می‌تواند حافظه زیادی روی سرور رزرو کند.

کنترل جریان (Flow-Control Window): به گیرنده امکان می‌دهد میزان داده قابل دریافت را محدود کند. مهاجم می‌تواند با ارسال داده کم و نگه داشتن اتصال باز، حافظه رزرو شده را آزاد نکند و در نتیجه باعث افزایش مصرف حافظه، کاهش کارایی و افت پاسخ‌دهی سرور شود.

این دو مکانیزم دقیقا موتور اصلی HTTP/2 Bomb هستند. در بخش بعد، سازوکار دقیق حمله و ترکیب دو تکنیک را مرحله به مرحله بررسی می‌کنیم.

کالبدشکافی حمله؛ HTTP/2 Bomb چگونه کار می‌کند؟

هسته حمله از ترکیب دو قابلیت داخلی HTTP/2 ساخته شده است که هر یک به تنهایی برای بهبود عملکرد وب استفاده می‌شدند، اما کنار هم مسیر جدیدی برای حمله DoS ایجاد کرده‌اند.

HPACK Bomb: وقتی یک بایت به هزاران بایت تبدیل می‌شود

HPACK هدرها را در جدول داینامیک ذخیره می‌کند. مهاجم ابتدا یک هدر را ثبت و سپس هزاران بار تنها با یک index به آن ارجاع می‌دهد. حجم داده ارسالی کم است، اما سرور برای هر ارجاع باید اطلاعات مربوط به هدر را در حافظه ایجاد کند. برخلاف نسخه‌های قدیمی HPACK Bomb، حتی هدرهای کوچک یا خالی باعث مصرف حافظه قابل توجه می‌شوند. همچنین محدودیت‌های قدیمی روی حجم هدرهای Decode شده در برابر این روش بی‌اثر هستند.

Flow Control: چگونه حافظه آزاد نمی‌شود؟

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

در یک حمله واقعی، هدف مهاجم لزوماً رساندن فرایند به وضعیت OOM (مخفف Out-of-Memory) نیست؛ وضعیتی که در آن سیستم به دلیل کمبود حافظه، برخی پردازش‌ها را به‌طور اجباری متوقف می‌کند. اگر در حالت OOM، پردازش توسط OOM Killer متوقف شود، معمولاً Worker به‌سرعت مجدداً راه‌اندازی می‌شود و بخشی از اثر حمله از بین می‌رود. راهبرد مؤثرتر این است که مصرف حافظه درست در آستانه فعال شدن OOM نگه داشته شود؛ به‌طوری که سیستم ناچار به استفاده گسترده از حافظه Swap شود. در این وضعیت، اگرچه سرویس کاملاً از دسترس خارج نمی‌شود، اما زمان پاسخ‌دهی به‌شدت افزایش می‌یابد و عملکرد سایر درخواست‌ها نیز به‌طور محسوسی کاهش پیدا می‌کند.

اثر واقعی HTTP/2 Bomb روی سرورها

HTTP/2 Bomb فقط یک ایده تئوریک نیست. محققان Calif این حمله را روی چند مورد از پرکاربردترین سرورهای وب آزمایش کرده‌اند و نتایج نشان می‌دهد که پیاده‌سازی HTTP/2 در هر محصول، تاثیر مستقیمی بر شدت حمله دارد.

blank
روند افزایش مصرف حافظه در آپاچی httpd، سپس Envoy، انجین‌اکس و مایکروسافت IIS در آزمایش محققان Calif (به ترتیب از بالا سمت چپ و در جهت عقربه‌های ساعت مشاهده کنید). تصویر با سرعت ۲X نمایش داده شده است.

نتایج این آزمایش‌ها در جدول زیر خلاصه شده است:

سرورضریب بزرگنماییزمان تقریبی مصرف کامل حافظه
Envoy 1.37.2حدود ۵۷۰۰:۱حدود ۱۰ ثانیه برای ۳۲GB
Apache httpd 2.4.67حدود ۴۰۰۰:۱حدود ۱۸ ثانیه برای ۳۲GB
nginx 1.29.7حدود ۷۰:۱حدود ۴۵ ثانیه برای ۳۲GB
Microsoft IIS (Windows Server 2025)حدود ۶۸:۱حدود ۴۵ ثانیه (تا ۶۴GB)

منظور از ضریب بزرگنمایی (Amplification Ratio) این است که هر یک بایت داده‌ای که مهاجم ارسال می‌کند، چه مقدار حافظه روی سرور اشغال می‌شود. هرچه این عدد بزرگ‌تر باشد، مهاجم با پهنای باند کمتر می‌تواند فشار بیشتری به سرور وارد کند.

نتایج آزمایش‌ها نشان می‌دهد که Envoy و Apache httpd بیشترین تاثیر را از این حمله می‌پذیرند. در سمت مقابل، nginx و Microsoft IIS ضریب بزرگنمایی کمتری دارند، اما همچنان در برابر حمله HTTP/2 Bomb آسیب‌پذیر هستند. به‌طورکلی، جلوگیری از حمله HTTP/2 Bomb نیازمند شناخت دقیق همین تفاوت‌ها در پیاده‌سازی سرورهاست.

محققان تفاوت نتایج را به جزئیات پیاده‌سازی HPACK و نحوه مدیریت حافظه در محصولات مختلف نسبت می‌دهند. در Apache httpd و Envoy، بازسازی هدرها و ساختارهای داخلی مرتبط با آن‌ها حافظه بیشتری مصرف می‌کند، در حالی که nginx و IIS سربار کمتری دارند. به همین دلیل ضریب بزرگنمایی حمله در آنها متفاوت است.

تکنیک‌های دور زدن محدودیت‌ها (Bypass Techniques)

یکی از دلایل خطرناک‌تر بودن HTTP/2 Bomb نسبت به HPACK Bomb کلاسیک، توانایی آن در دور زدن مکانیزم‌های دفاعی موجود است. در ادامه، دو تکنیک اصلی این حمله برای عبور از محدودیت‌های حجم و تعداد هدرها را بررسی می‌کنیم.

عبور از محدودیت حجم هدرها

پس از معرفی HPACK Bomb در سال ۲۰۱۶، بسیاری از پیاده‌سازی‌های HTTP/2 محدودیتی برای Total Decoded Header Size در نظر گرفتند تا از بازسازی هدرهای بسیار بزرگ جلوگیری کنند.

در HTTP/2 Bomb، هدرها می‌توانند بسیار کوچک یا تقریبا خالی باشند و بخش عمده مصرف حافظه از metadata و ساختارهای داخلی HPACK ناشی می‌شود. در نتیجه محدودیت حجم هدرهای Decode شده عملا اثرگذار نیست و دفاع طراحی‌شده برای نسخه‌های قدیمی‌تر، کارایی خود را از دست می‌دهد.

برخی پیاده‌سازی‌ها مانند Apache httpd و Envoy علاوه بر محدودیت حجم، تعداد Header Fieldها را هم کنترل می‌کنند تا مهاجم نتواند با ارسال تعداد زیادی هدر کوچک، منابع سرور را مصرف کند.

HTTP/2 امکان تقسیم یک Cookie بزرگ به چند Cookie Header کوچک‌تر (Cookie Crumbs) را فراهم می‌کند (RFC 9113). این قابلیت برای بهبود فشرده‌سازی طراحی شده است، اما در آزمایش‌ها مشخص شد که در برخی شرایط، این Crumbها در Apache و Envoy در شمارش محدودیت تعداد هدرها لحاظ نمی‌شوند.

در نتیجه، مهاجم می‌تواند بدون فعال شدن محدودیت تعداد هدر، تعداد زیادی Cookie Crumb ایجاد کند و هر Crumb هم ورودی جدیدی در HPACK ایجاد می‌کند و سربار حافظه را افزایش می‌دهد.

وضعیت وصله‌ها در سرورهای مختلف

پس از افشای حمله HTTP/2 Bomb، مهم‌ترین سوال برای مدیران سیستم و مهندسان امنیت این است که سرورهای ما ایمن هستند؟ چه اقداماتی برای جلوگیری از حمله HTTP/2 Bomb باید انجام داد؟

محققان Calif قبل از انتشار عمومی، آسیب‌پذیری را به تیم‌های توسعه گزارش کردند. با این حال، وضعیت وصله‌ها (پچ‌ها) در زمان انتشار برای سرورهای مختلف متفاوت بود. جدول زیر خلاصه‌ای از وضعیت هر سرور را نشان می‌دهد:

سروروضعیتنسخه / توضیح
nginxوصله شده1.29.8+ – اضافه شدن max_headers با پیش‌فرض ۱۰۰۰
Apache httpdوصله شدهرفع شده در  mod_http2 v2.0.41 – اگر قصد آپگرید ندارید، پیشنهاد می‌شود پروتکل http/1.1 را طوری تنظیم کنید که HTTP/2 غیر فعال شود.
Microsoft IISوصله نشدهدر زمان نگارش این مقاله، مایکروسافت هنوز جزئیات فنی یا وصله رسمی برای IIS منتشر نکرده است.
Envoyدر حال بررسیوصله منتشر شده، اما محققان همچنان در حال راستی‌آزمایی دقیق‌تر هستند. تا تأیید نهایی، بهتر است HTTP/2 را موقتاً غیرفعال کنید.
Cloudflare Pingoraمحافظت معماریبه طور خودکار در برابر حمله محافظت ایجاد می‌کند

راهکارهای کاهش آسیب (Mitigation Strategies)

چند اقدام موثر برای جلوگیری از حمله HTTP/2 Bomb وجود دارند که می‌توانید آن‌ها را اجرا کنید. این اقدامات را می‌توان در چند سطح اصلی اجرا کرد:

ارتقا به نسخه وصله‌شده

نصب سریع وصله‌های رسمی اولین و مهم‌ترین گام است. برای سرورهایی که وصله منتشر شده، نسخه‌ها باید به‌روزرسانی شوند:

غیرفعال کردن موقت HTTP/2

در سرورهایی که وصله در دسترس نیست یا قصد آصب وصله را ندارید، غیرفعال کردن پروتکل HTTP/2 و بازگشت به HTTP/1.1، می‌تواند به عنوان راهکار موقت عمل کند:

سروردستور غیرفعال‌سازی
nginxاگر قصد آپگرید ندارید، HTTP/2 را با http2 off; غیر فعال کنید.
Apache httpdاگر قصد آپگرید ندارید، پیشنهاد می‌شود پروتکل http/1.1 را طوری تنظیم کنید که HTTP/2 غیر فعال شود.
سایر سرورهامستندات فروشنده را بررسی کنید

استفاده از Reverse Proxy یا CDN

قرار دادن سرور پشت یک Reverse Proxy یا CDN که وصله شده یا به‌طور ذاتی محافظت دارد، می‌تواند حمله را قبل از رسیدن به سرور اصلی متوقف کند. برای مثال:

  • استفاده از Cloudflare که به صورت خودکار محافظت ارائه می‌کند
  • استفاده از nginx وصله‌شده به عنوان پروکسی جلوی سرورهای آسیب‌پذیر، محافظت ایجاد می‌کند.

اعمال محدودیت روی هدرها و Streamها

به‌طور کلی، «حداکثر اندازه هدرهای Decode شده» و «حداکثر تعداد هدرها» دو محدودیت متفاوت هستند و هر سرور باید هر دو را اعمال کند. هر سرویس یا مؤلفه‌ای که ترافیک HTTP/2 را دریافت و پردازش می‌کند (مانند وب‌سرورها، Reverse Proxyها، لود بالانسرها و API Gatewayها)، باید تعداد فیلدهای هدر در هر درخواست را (از جمله Cookie Crumbها) مستقل از اندازه کلی آن‌ها محدود کند. همچنین، مدت‌زمان مجاز برای باز ماندن یک stream متوقف‌شده را بدون توجه به فعالیت WINDOW_UPDATE مشخص و محدود سازد.

محدودیت حافظه (Memory Limits)

اگر در حال حاضر امکان اعمال این کنترل‌ها را ندارید، بهتر است برای هر ورکر محدودیت حافظه تعریف کنید؛ برای مثال با استفاده از cgroups، دستور ulimit -v یا محدودیت‌های حافظه در کانتینرها. این محدودیت‌ها باید به اندازه‌ای سخت‌گیرانه باشند که در صورت وقوع حمله، ورکر آسیب‌دیده پیش از آنکه کل سیستم را وارد Swap کند، توسط OOM Killer متوقف و مجدداً راه‌اندازی شود. یک ورکر معمولاً به چندین گیگابایت حافظه نیاز ندارد؛ بنابراین متوقف شدن زودهنگام یک ورکر، سناریوی بسیار بهتری نسبت به این است که مهاجم بتواند کل سرور را برای مدت طولانی در آستانه ۹۵ درصد مصرف حافظه نگه دارد.

محدودیت نرخ (Rate Limiting)

کنترل نرخ ایجاد اتصال‌ها یا استریم‌ها به ازای هر IP می‌تواند سرعت اجرای حمله را کاهش دهد و فرصت واکنش برای تیم امنیتی فراهم کند. این اقدام به تنهایی کافی نیست اما موثر است.

نقش هوش مصنوعی در کشف حمله (Codex Effect)

HTTP/2 Bomb توسط تیم امنیتی Calif با کمک OpenAI Codex شناسایی شد. در این پژوهش، Codex دو تکنیک شناخته‌شده یعنی HPACK Bomb و سوءاستفاده از HTTP/2 Flow Control را کنار هم قرار داد و اثر ترکیبی آن‌ها را آشکار کرد.

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

جمع‌بندی

HTTP/2 Bomb یک آسیب‌پذیری جدید در پروتکل HTTP/2 نیست، بلکه روشی برای ترکیب دو قابلیت استاندارد این پروتکل یعنی HPACK و Flow Control است. همین موضوع باعث شد مکانیزم‌هایی که سال‌ها برای مقابله با HPACK Bomb یا محدود کردن اندازه هدرها طراحی شده بودند، در برخی پیاده‌سازی‌ها نتوانند از این حمله جلوگیری کنند.

نتایج آزمایش‌ها نشان می‌دهد شدت تأثیر HTTP/2 Bomb به نحوه پیاده‌سازی HTTP/2 در هر محصول وابسته است. هرچند nginx ،Apache httpd ،Envoy و Microsoft IIS همگی تحت تأثیر این تکنیک قرار گرفته‌اند، اما میزان مصرف حافظه و ضریب بزرگنمایی حمله در آن‌ها یکسان نیست.

برای کاهش ریسک و جلوگیری از حمله HTTP/2 Bomb، اولین اقدام باید ارتقا به نسخه‌های وصله‌شده باشد. در محیط‌هایی که امکان به‌روزرسانی فوری وجود ندارد، محدود کردن تعداد هدرها، کنترل طول عمر Streamها، اعمال محدودیت حافظه برای Workerها و استفاده از Reverse Proxyها یا CDNهای محافظت‌شده می‌تواند اثر حمله را کاهش دهد.

شاید مهم‌ترین درس HTTP/2 Bomb این باشد که در امنیت نرم‌افزارها، همیشه مشکل از یک قابلیت منفرد نیست. گاهی ترکیب چند رفتار کاملاً استاندارد و قانونی می‌تواند به یک روش حمله جدید تبدیل شود که سال‌ها از دید پژوهشگران پنهان مانده است.

کتاب‌ها

کتاب‌ها

منابع توسعه زیرساخت به زبان فارسی
موفقیت مشتریان

موفقیت مشتریان

نقش هم‌روش در تحقق ایده‌ها
وبینارها

وبینارها

معرفی جدیدترین محصولات و ارائه‌ها