معرفی آسیب‌پذیری HollowByte

تیم قرمز (Red Team) شرکت Okta جزئیات یک آسیب‌پذیری جدید در کتابخانه OpenSSL را منتشر کرده است که با نام HollowByte شناخته می‌شود. این باگ امنیتی که توسط خود OpenSSL به عنوان یک «آسیب‌پذیری» طبقه‌بندی نشده است، می‌تواند با ارسال تنها ۱۱ بایت داده، حافظه یک سرور وصله‌نشده را تا ۱۳۱ کیلوبایت به ازای هر اتصال منجمد کند. نکته خطرناک‌تر این است که در سیستم‌های مبتنی بر glibc (که اکثر توزیع‌های لینوکس از آن استفاده می‌کنند)، این حافظه هرگز به سیستم بازگردانده نمی‌شود. این یعنی حتی پس از قطع اتصال مهاجم، حافظه مصرف شده تا زمان راه‌اندازی مجدد فرآیند، در اختیار سیستم باقی می‌ماند.

جزئیات فنی HollowByte

هر پیام دست‌دهی (Handshake) در پروتکل TLS شامل یک هدر ۴ بایتی است که ۳ بایت آن طول بدنه را مشخص می‌کند. در نسخه‌های آسیب‌پذیر OpenSSL، اندازه بافر دریافت بلافاصله پس از دریافت هدر (و قبل از دریافت حتی یک بایت از بدنه و اجرای بررسی‌های امنیتی) به اندازه اعلام‌شده توسط مهاجم افزایش می‌یابد. بنابراین، مهاجم می‌تواند با ارسال یک هدر ClientHello با طول ۱۳۱ کیلوبایت (حداکثر مجاز)، سرور را مجبور به تخصیص این حجم حافظه کند. سپس thread کارگر سرور مسدود می‌شود و منتظر بدنه‌ای می‌ماند که هرگز نخواهد رسید. این یک حمله انکار سرویس (DoS) از نوع خالی کردن اتصالات (Connection Exhaustion) است.

نقش glibc در تشدید حمله

آنچه HollowByte را از حملات مشابه متمایز می‌کند، رفتار تخصیص‌دهنده حافظه glibc است. وقتی مهاجم اتصال را قطع می‌کند، OpenSSL بافر را آزاد می‌سازد، اما glibc بلوک‌های کوچک و متوسط آزاد شده را برای استفاده مجدد نگه می‌دارد و آن‌ها را به هسته سیستم‌عامل بازنمی‌گرداند. مهاجم با تغییر اندازه اعلام‌شده در هر اتصال، باعث می‌شود که heap (پشته حافظه) تکه‌تکه شود و تخصیص‌دهنده نتواند از بلوک‌های آزاد شده استفاده مجدد کند. در نتیجه، Resident Set Size (RSS) یا حافظه فیزیکی مصرف‌شده توسط فرآیند به طور مداوم افزایش می‌یابد و تا راه‌اندازی مجدد فرآیند کاهش نمی‌یابد.

تاثیر عملی بر سرورها

آزمایش‌های Okta بر روی سرورهای NGINX نتایج نگران‌کننده‌ای را نشان می‌دهد:

  • یک سرور با ۱ گیگابایت حافظه (RAM) پس از مصرف ۵۴۷ مگابایت حافظه منجمد شده در قطعات، توسط سیستم عامل (OOM Killer) کشته شد.
  • در یک سرور ۱۶ گیگابایتی، HollowByte موفق شد بدون عبور از محدودیت تعداد اتصالات همزمان، ۲۵٪ از حافظه سیستم (حدود ۴ گیگابایت) را قفل کند.

همانطور که تیم قرمز Okta تاکید کرده است: «دفاع‌های استاندارد محدودکننده اتصال (مانند Connection Limiting) قادر به متوقف کردن این حمله نیستند.»

واکنش OpenSSL: یک باگ، نه یک آسیب‌پذیری

OpenSSL بر خلاف انتظار، این مشکل را به عنوان یک آسیب‌پذیری امنیتی تلقی نکرده است. مت کاسول (Matt Caswell)، نویسنده وصله، در درخواست ادغام (Pull Request) خود اعلام کرد که تیم امنیتی OpenSSL تصمیم گرفته است «این مشکل را صرفاً به عنوان یک رفع باگ یا سخت‌افزاری (bug or hardening) مدیریت کند.» این در حالی است که سیاست امنیتی OpenSSL چهار سطح «بحرانی» (Critical) تا «کم» (Low) را تعریف می‌کند و «باگ یا سخت‌افزاری» جزو آن‌ها نیست. حتی یک مشکل با سطح «کم» (Low) یک شماره CVE، یک یادداشت در changelog و یک ورودی در صفحه آسیب‌پذیری‌ها دریافت می‌کند، اما HollowByte هیچ‌کدام از این موارد را ندارد. The Hacker News هیچ اشاره‌ای به این رفع در یادداشت‌های انتشار یا در تمام ۲۳ ورودی changelog OpenSSL 4.0.1 پیدا نکرد.

تناقض در رفتار OpenSSL

این تصمیم در حالی گرفته شده که در ژانویه همین سال، OpenSSL شماره CVE-2025-66199 با سطح «کم» را به یک باگ فشرده‌سازی گواهی TLS 1.3 اختصاص داد که در آن یک طول ارائه‌شده توسط همتا، بافر heap را قبل از اعتبارسنجی بزرگ می‌کرد (حدود ۲۲ مگابایت به ازای هر اتصال). برای بهره‌برداری از آن باگ، چهار شرط لازم بود: کامپایل فشرده‌سازی گواهی، در دسترس بودن الگوریتم فشرده‌سازی، مذاکره بر سر extension و در سرورها، درخواست گواهی مشتری. اما HollowByte به هیچ یک از این شرایط نیاز ندارد. همچنین در همان انتشار ۹ ژوئن، CVE-2026-34183 با سطح «متوسط» (Moderate) به رشد حافظه نامحدود در کنترل‌کننده QUIC PATH_CHALLENGE اختصاص یافت. هر دو مورد (HollowByte و آن CVE) یک حمله انکار سرویس از نوع تخلیه حافظه هستند، اما تنها یکی از آن‌ها شماره CVE دریافت کرده است.

نسخه‌های وصله‌شده و وضعیت پشتیبانی

نسخه‌های وصله‌شده OpenSSL عبارتند از: 4.0.1، 3.6.3، 3.5.7، 3.4.6 و 3.0.21 که همگی مورخ ۹ ژوئن ۲۰۲۵ هستند. تمام نسخه‌های قبلی روی این شاخه‌ها آسیب‌پذیر هستند. هیچ شناسه CVE یا مشاوره امنیتی برای این وصله وجود ندارد، بنابراین مدیران سیستم باید به صورت دستی از به‌روزرسانی به این نسخه‌ها اطمینان حاصل کنند. The Hacker News از OpenSSL پرسیده است که آیا وصله به شاخه‌های پشتیبانی طولانی‌مدت (LTS) 1.1.1 و 1.0.2 نیز منتشر شده است یا خیر، اما هنوز پاسخی دریافت نکرده است.

نتیجه‌گیری و توصیه‌ها

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