خانه » CVE-2025-58186

CVE-2025-58186

Lack Of Limit When Parsing Cookies Can Cause Memory Exhaustion In Net/Http

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

چکیده

آسیب‌پذیری در کتابخانه net/http زبان برنامه‌نویسی Go به دلیل عدم محدودیت تعداد کوکی‌های قابل تجزیه رخ می‌دهد. مهاجم می‌تواند با ارسال تعداد زیادی کوکی کوچک مانند “a=;” در هدرهای HTTP، مصرف حافظه سرور را افزایش دهد و منجر به تخلیه حافظه (Memory Exhaustion) شود.

توضیحات

آسیب‌پذیری CVE-2025-58186 در کتابخانه‌ی net/http استاندارد زبان برنامه‌نویسی Go ناشی از عدم محدودیت در تعداد کوکی‌های قابل تجزیه است، در حالی که هدرهای HTTP محدودیت پیش‌فرض 1 مگابایت دارند. مهاجم می‌تواند با ارسال یک هدر HTTP حاوی تعداد زیادی کوکی کوچک (مثلاً تکرار “a=;” تا حدود 1 مگابایت هدر)، سرور را وادار به تخصیص انبوه ساختارهای کوکی (Cookie structs) کند. به‌عنوان مثال، یک هدر 1 مگابایتی می‌تواند حدود 66 مگابایت حافظه در heap مصرف کند و منجر به اختلال در دسترس‌پذیری (DoS) از طریق مصرف کامل شود.

این حمله از طریق پروتکل HTTP (استاندارد انتقال داده در وب) انجام می‌شود و مهاجم نیازی به احراز هویت یا تعامل کاربر ندارد. بردار حمله شبکه‌ای (Network) است و در سرورهای عمومی (Public-Facing) مانند APIهای مبتنی بر Go ریسک بالاتری دارد.

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

پیامد اصلی این آسیب‌پذیری اختلال محدود در دسترس‌پذیری است که با مصرف کامل حافظه باعث توقف موقت سرور می‌شود. این ضعف در تمامی برنامه‌های HTTP سرور مبتنی بر Go فعال است. تیم Go برای رفع این ضعف، محدودیتی پیش‌فرض برای تعداد کوکی‌ها به میزان 3000 کوکی اضافه کرده و گزینه‌ی GODEBUG=httpcookiemaxnum را برای تنظیم این محدودیت فراهم کرده است. نسخه‌های پچ شده 1.24.8 و 1.25.2 در اکتبر 2025 منتشر شده‌اند.

CVSS

Score Severity Version Vector String
5.3 MEDIUM 3.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L

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

Versions Product
affected from 0 before 1.24.8

affected from 1.25.0 before 1.25.2

net/http

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

Versions Product
1.24.8

1.25.2

net/http

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

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

Approx. Usage in .ir Domain via Google

(Total Pages)

Search Query (Dork) Product
365 site:.ir “Go standard library” Go standard library

نتیجه گیری

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

  • به‌روزرسانی فوری: تمام سرویس ها و برنامه‌های مبتنی بر Go را به نسخه‌های 1.24.8 ، 1.25.2 یا بالاتر به‌روزرسانی کنید. به‌روزرسانی، مؤثرترین و قطعی‌ترین راهکار برای رفع آسیب‌پذیری است و باید در اولویت قرار گیرد. سایر اقدامات می‌توانند به کاهش ریسک این آسیب پذیری و مقابله با حملات مشابه کمک کنند.
  • تنظیم محدودیت تعداد کوکی ها (GODEBUG): متغیر محیطی GODEBUG=httpcookiemaxnum=3000 را برای فرآیند Go تنظیم کنید تا حداکثر تعداد کوکی‌های قابل‌تجزیه محدود شود؛ از قرار دادن 0 (نامحدود) خودداری کنید.
  • محدودسازی هدرها: در سرور HTTP، مقدار MaxHeaderBytes را به 1 مگابایت یا کمتر تنظیم کنید و از محدودسازی نرخ درخواست(Rate Limiting) با ابزارهایی مانند Nginx یا Traefik استفاده نمایید.
  • نظارت و ثبت لاگ: مصرف حافظه Heap را با ابزارهایی مانند pprof (Go Profiler) یا Prometheus مانیتور کنید برای افزایش ناگهانی تخصیص ساختارهای کوکی و هشدار تنظیم کنید.
  • فیلتر و فایروال اپلیکیشن وب : ترافیک HTTP را با فایروال اپلیکیشن وب (WAF) مانند ModSecurity فیلتر کنید تا هدرهای مشکوک با کوکی‌های زیاد مسدود شود.
  • ایزوله‌سازی: سرورهای Go را در کانتینرهای Docker با محدودیت حافظه (Memory Limits) اجرا کنید و از Horizontal Scaling برای توزیع ترافیک استفاده نمایید.
  • تست امنیتی: برنامه‌ها را با ابزارهایی مانند Burp Suite یا OWASP ZAP اسکن کنید تا هدرهای مخرب کوکی شناسایی شود. همچنین از روش Fuzzing (تست تصادفی ورودی) برای ارزیابی مقاومت تجزیه HTTP بهره ببرید.
  • آموزش توسعه‌دهندگان: تیم‌های توسعه را درباره ریسک تخلیه حافظه (Memory Exhaustion) در تجزیه HTTP و ضرورت اعمال محدودیت‌های ورودی آموزش دهید.

اجرای این اقدامات، به‌ویژه به‌روزرسانی سریع و تنظیم GODEBUG، ریسک بهره‌برداری از این آسیب‌پذیری را کاهش داده و امنیت سرورهای HTTP مبتنی بر Go را به‌صورت قابل‌توجهی افزایش می‌دهد.

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

Initial Access (TA0001)
این ضعف شبکه‌ای و قابل بهره‌برداری از راه دور علیه سرویس‌های HTTP است: مهاجم می‌تواند با ارسال درخواست‌های HTTP شامل هدرهای Cookie ساختگی (تعداد بسیار زیادی کوکی‌های کوچک مانند a=;) به سرورهای عمومی نوشته‌شده با Go ، حافظه سرور را به‌سرعت مصرف کند و دسترسی اولیه‌ای برای ایجاد اختلال (DoS) به‌دست آورد.

Defense Evasion (TA0005)
حمله exhaustion می‌تواند با ارسال بسته‌های ظاهراً قانونی و با نرخ پایین اجرا شود تا از قوانین ساده IDS/Rate‑limit عبور کند؛ همچنین مهاجم می‌تواند headerها را طوری قالب‌بندی کند که signature‑ها را دور بزند.

Impact (TA0040)
اثر فنی اصلی Availability: Memory Exhaustion → DoS است؛ در عملکرد کسب‌وکار، سرویس‌های وب یا APIهای مبتنی بر Go می‌توانند از دسترس خارج شوند و باعث اختلال در سرویس‌دهی و واکنش‌های زنجیره‌ای شوند.

منابع

  1. https://www.cve.org/CVERecord?id=CVE-2025-58186
  2. https://www.cvedetails.com/cve/CVE-2025-58186/
  3. https://go.dev/issue/75672
  4. https://vulmon.com/vulnerabilitydetails?qid=CVE-2025-58186
  5. https://vuldb.com/?id.327872
  6. https://go.dev/cl/709855
  7. https://groups.google.com/g/golang-announce/c/4Emdl2iQ_bI
  8. https://pkg.go.dev/vuln/GO-2025-4012
  9. http://www.openwall.com/lists/oss-security/2025/10/08/1
  10. https://nvd.nist.gov/vuln/detail/CVE-2025-59186

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

پیام بگذارید