خانه » CVE-2025-5115

CVE-2025-5115

MadeYouReset HTTP/2 Vulnerability

توسط Vulnerbyte Alerts
300 بازدید
هشدار سایبری CVE-2025-5115

چکیده

آسیب‌پذیری MadeYouReset در Eclipse Jetty امکان اجرای حمله انکار سرویس (DoS) از طریق فریم‌های کنترل نامعتبر در پروتکل HTTP/2 را فراهم می‌کند. در این حمله مهاجم می‌تواند با ارسال فریم‌هایی مانند WINDOW_UPDATE با مقدار delta برابر صفر ، سرور را وادار به ارسال RST_STREAM کند و بدین‌وسیله محدودیت حداکثر جریان‌های هم‌زمان (max concurrent streams) را دور بزند. این عملکرد باعث ایجاد تعداد زیادی جریان روی همان اتصال شده و در نتیجه مصرف بیش از حد منابع (CPU یا حافظه) و اختلال در سرویس رخ می‌دهد. این ضعف مشابه با Rapid Reset است، با این تفاوت که در MadeYouReset فریم RST_STREAM توسط سرور ارسال می‌شود.

توضیحات

آسیب‌پذیری CVE-2025-5115 از نوع MadeYouReset (نوعی حمله انکار سرویس) در پیاده‌سازی پروتکل HTTP/2 در Eclipse Jetty به دلیل مصرف کنترل‌نشده منابع است که مطابق با استاندارد CWE‑400 طبقه بندی می شود. این آسیب پذیری ناشی از نقص در پیاده سازی پروتکل HTTP/2 در آن می باشد. این پروتکل نسخه‌ی بهبود یافته‌ و کارآمدتری از HTTP/1.1 است که برای انتقال داده‌ها با سرعت بیشتر و کارایی بهتر از قابلیت‌هایی مانند چند‌پخشی (multiplexing) و فشرده‌سازی هدرها (header compression) استفاده می کند. در این آسیب‌پذیری، زمانی که سرور فریم RST_STREAM را ارسال می‌کند، شمارنده جریان‌های فعال (active streams) به‌درستی به‌روزرسانی نمی‌شود و در نتیجه بخش پشتیبان (backend) همچنان درخواست‌های لغوشده را پردازش می‌کند.

مهاجم می‌تواند با ارسال فریم‌های کنترل نامعتبر، مانند WINDOW_UPDATE با مقدار delta برابر صفر (که طبق RFC 9113 غیرقانونی است و موجب ارسال فریم RST_STREAM از سوی سرور می‌شود)، یا ارسال فریم‌های HEADERS و DATA روی جریان‌هایی که نیمه‌بسته هستند، یا ارسال فریم PRIORITY با طول نامعتبر، تعداد نامحدودی جریان ایجاد کند بدون اینکه محدودیت SETTINGS_MAX_CONCURRENT_STREAMS (معمولاً 100) را نقض کند.

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

این حمله می‌تواند از راه دور و بدون نیاز به تعامل کاربر یا دسترسی خاصی انجام شود. مهاجم می‌تواند از طریق اسکریپت‌ها یا ابزارهای خودکار هزاران جریان در هر ثانیه ایجاد کند، بدون اینکه منتظر پاسخ سرور باشد. این آسیب‌پذیری مشابه آسیب‌پذیری Rapid Reset (CVE‑2023‑44487) است، با این تفاوت که در اینجا فریم RST_STREAM از سمت سرور ارسال می‌شود، نه از سمت کلاینت، بنابراین روش‌های محدودسازی نرخ برای RST_STREAM در سمت کلاینت نمی‌توانند در این حمله مؤثر باشند.

پروتکل HTTP/2 ساختارهای مورد نظر را در بندهای 6.9 (برای WINDOW_UPDATE) و 5.1 (برای وضعیت‌های جریان) تعریف می‌کند. پیامد اصلی این آسیب‌پذیری اختلال در سرویس و مصرف بیش از حد منابع در محیط‌های پرترافیک است که می‌تواند منجر به اثرات منفی روی منطق پشتیبان (مانند پردازش درخواست‌های لغوشده) شود. این ضعف در تمامی اتصالات فعال HTTP/2 وجود دارد و در پیاده‌سازی‌هایی که با RFC به‌طور کامل هم‌خوانی ندارند، ممکن است سایر فریم‌ها مانند CONTINUATION نیز موجب بروز مشکلات مشابه شوند.

تیم توسعه Jetty برای رفع این آسیب پذیری، با بهبود روند پاکسازی نشست‌های HTTP/2 (HTTP2Session cleanup) و محدودسازی تولید فریم‌های RST_STREAM اقدام کرده است. نسخه‌های 9.4.58، 10.0.26، 11.0.26 و 12.0.25 این آسیب‌پذیری را پچ کرده‌اند.

CVSS

Score Severity Version Vector String
7.7 HIGH 4.0 CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:N/SI:N/SA:H

لیست محصولات آسیب پذیر

Versions Product
affected from >=9.3.0 through <=9.4.57

affected from >=10.0.0 through <=10.0.25

affected from >=11.0.0 through <=11.0.25

affected from >=12.0.0 through <=12.0.21

affected from >=12.1.0.alpha0 through <=12.1.0.alpha2

Eclipse Jetty

لیست محصولات بروز شده

Versions Product
9.4.58

10.0.26

11.0.26

12.0.25

12.1.0.beta3

Eclipse Jetty

استفاده محصول در ایران

در این جدول، تعداد صفحات ایندکس‌شده در گوگل با دامنه .ir که Eclipse Jetty را ذکر کرده اند، ثبت شده است. این داده صرفاً برای برآورد تقریبی حضور محصولات در وب ایران استفاده شده و نمایانگر میزان نصب دقیق و استفاده واقعی نیست.

Approx. Usage in .ir Domain via Google

(Total Pages)

Search Query (Dork) Product
346 site:.ir “Eclipse Jetty” Eclipse Jetty

نتیجه گیری

این آسیب‌پذیری با شدت بالا در Eclipse Jetty، ریسک انکار سرویس را از طریق دور زدن محدودیت جریان های هم زمان در HTTP/2 افزایش می‌دهد و می‌تواند در سناریوهایی که سرورهای وب به اینترنت متصل هستند، منجر به مصرف بیش از حد منابع و اختلال گسترده در سرویس شود. با توجه به انتشار پچ‌های امنیتی، اجرای اقدامات زیر برای جلوگیری از بهره‌برداری و کاهش سطح ریسک ضروری است:

  • به‌روزرسانی فوری: تمام نصب‌های Jetty را به نسخه‌های 9.4.58، 10.0.26، 11.0.26، 12.0.25 یا 12.1.0 (بر اساس شاخه‌ی مورد استفاده) به‌روزرسانی کنید. به‌روزرسانی، اولین و مؤثرترین راهکار برای رفع آسیب‌پذیری است و باید در اولویت قرار گیرد. سایر راهکارها میتواند برای این مشکل و موارد مشابه موثر باشد.
  • محدود کردن RST_STREAM: نرخ و تعداد فریم های RST_STREAM ارسالی از سرور را محدود کنید (مثلاً با تعیین آستانه 100 در ثانیه) تا از حملات MadeYouReset جلوگیری شود. این روش همچنین با محدودسازی نرخ فریم‌های RST_STREAM در حملات Rapid Reset هم‌خوانی دارد.
  • فیلتر کردن فریم‌های کنترل: فریم‌های WINDOW_UPDATE، PRIORITY و DATA را اعتبارسنجی کنید؛ در صورتی که delta برابر صفر باشد یا سرریز رخ دهد، آن‌ها را رد کنید و در صورت بروز خطای پروتکلی، با ارسال فریم GO_AWAY (کد PROTOCOL_ERROR) پاسخ دهید.
  • نظارت و ثبت لاگ: از ابزارهایی مانند Prometheus یا Jetty Metrics برای نظارت بر تعداد RST_STREAM و جریان های فعال استفاده کنید و لاگ‌های HTTP/2 را با سطح جزئیات DEBUG بررسی کنید تا الگوهای فریم های مخرب شناسایی شود.
  • ایزوله‌سازی و غیرفعال‌سازی: در صورت عدم نیاز به HTTP/2 آن را غیرفعال کنید (تنظیم http2.enabled=false) و سرورها را در کانتینرهای ایزوله مانند Docker اجرا نمایید؛ دسترسی ها را با فایروال اپلیکیشن وب (WAF) مانند ModSecurity محدود سازید.
  • تست امنیتی: سرورها را با استفاده از ابزارهای تحلیل HTTP/2 مانند h2spec یا Burp Suite اسکن کنید تا اطمینان حاصل شود که تمامی ساختارهای RFC به‌درستی پیاده‌سازی شده‌اند. همچنین، از تست‌های تصادفی (Fuzzing) برای ارزیابی مقاومت پروتکل در برابر فریم‌های مخرب استفاده کنید.
  • آموزش توسعه‌دهندگان: تیم‌های توسعه را درباره‌ی ریسک حملات DoS در HTTP/2 و ضرورت رعایت کامل RFC 9113 (مانند مدیریت دقیق جریان های فعال) آموزش دهید.

اجرای این اقدامات، به‌ویژه به‌روزرسانی سریع نسخه‌ها و محدود کردن RST_STREAM، ریسک بهره‌برداری از این آسیب‌پذیری را به‌طور چشمگیری کاهش داده و امنیت اتصالات HTTP/2 در اپلیکیشن‌های Eclipse Jetty را به‌صورت قابل‌توجهی افزایش می‌دهد.

امکان استفاده در تاکتیک های Mitre Attack

Initial Access (TA0001)

در این آسیب‌پذیری مهاجم از راه دور و از طریق اتصال HTTP/2 به سرویس هدف دسترسی اولیه‌ای لازم ندارد؛ تنها باز کردن یک اتصال و ارسال فریم‌های کنترل نامعتبر (مثلاً WINDOW_UPDATE باdelta=0 ) کافی است تا چرخه‌ای ایجاد شود که مصرف منابع را بالا ببرد.

Defense Evasion (TA0005)

مهاجم می‌تواند با پیچاندن فریم‌ها و استفاده از رفتارهای قانونی/نسبتاً نرمال HTTP/2 (مثلاً ارسال مقادیر قانونی به‌ظاهر درست ولی نامعمول) سعی کند فیلترهای ساده را دور بزند؛ همچنین حمله می‌تواند با حجم کم ولی سریع اجرا شود تا تشخیص مبتنی بر آستانه زمان‌بری را دور بزند.

Impact (TA0040)

پیامد اصلی Availability — ایجاد انکار سرویس (DoS) از طریق تولید تعداد نامحدود یا پرتعداد streamهای نیمه‌تعامل (due to RST_STREAM behavior) که به مصرف زیاد CPU/RAM و صف‌های پشتیبان منجر می‌شود.

منابع

  1. https://www.cve.org/CVERecord?id=CVE-2025-5115
  2. https://www.cvedetails.com/cve/CVE-2025-5115/
  3. https://github.com/jetty/jetty.project/security/advisories/GHSA-mmxm-8w33-wc4h
  4. https://vulmon.com/vulnerabilitydetails?qid=CVE-2025-5115
  5. https://vuldb.com/?id.320873
  6. https://github.com/jetty/jetty.project/pull/13449
  7. https://github.com/jetty/jetty.project/releases/tag/jetty-12.1.0
  8. https://github.com/jetty/jetty.project/releases/tag/jetty-12.0.25
  9. https://github.com/jetty/jetty.project/releases/tag/jetty-11.0.26
  10. https://github.com/jetty/jetty.project/releases/tag/jetty-10.0.26
  11. https://github.com/jetty/jetty.project/releases/tag/jetty-9.4.58.v20250814
  12. https://lists.debian.org/debian-lts-announce/2025/09/msg00014.html
  13. https://www.kb.cert.org/vuls/id/767506
  14. http://www.openwall.com/lists/oss-security/2025/09/17/1
  15. http://www.openwall.com/lists/oss-security/2025/08/20/4
  16. https://nvd.nist.gov/vuln/detail/CVE-2025-5115
  17. https://cwe.mitre.org/data/definitions/400.html

همچنین ممکن است دوست داشته باشید

پیام بگذارید