شرکت F5 با انتشار پچهای امنیتی برای آسیبپذیری انجینایکس (NGINX)، یک ضعف امنیتی بحرانی با شناسه CVE-2026-42533 را برطرف کرده است. این آسیبپذیری به یک مهاجم راه دور و بدون نیاز به احراز هویت اجازه میدهد با ارسال درخواستهای HTTP دستکاریشده، باعث بروز سرریز بافر Heap (Heap Buffer Overflow) در پردازههای ورکر یا به عبارتی کاری (Worker Process) شود. این آسیبپذیری انجینایکس میتواند منجر به کرش یا راهاندازی مجدد (Restart) پردازههای ورکر شده و در نتیجه شرایط انکار سرویس (DoS) را ایجاد کند. همچنین F5 اعلام کرده است که در صورت غیرفعال بودن یا امکان دور زدن مکانیزم تصادفیسازی فضای آدرس (ASLR)، این ضعف امنیتی ممکن است امکان اجرای کد از راه دور (RCE) را نیز فراهم کند. این آسیبپذیری در نسخههای NGINX 1.30.4، NGINX 1.31.3 و NGINX Plus 37.0.3.1 پچ شده است؛ با این حال، بررسیهای یکی از پژوهشگران امنیتی نشان میدهد امکان سوءاستفاده از این ضعف ممکن است فراتر از ارزیابی اولیه F5 باشد و به همین دلیل، بهروزرسانی فوری سامانههای آسیبپذیر اهمیت بالایی دارد.
مکانیزم فنی و نحوه عملکرد آسیبپذیری انجینایکس
ریشه این آسیبپذیری در موتور اسکریپت انجینایکس (NGINX Script Engine) قرار دارد. این موتور بخشی از کد است که هنگام پردازش هر درخواست، رشتهها را بر اساس دستورالعملهای پیکربندی تولید کرده و کنار هم قرار میدهد. این ضعف امنیتی تنها در یک پیکربندی خاص فعال میشود؛ زمانی که یک map مبتنی بر عبارت منظم (Regex-based map)، متغیری را ایجاد کند و مقدار این متغیر پس از یک Capture حاصل از تطبیق قبلی عبارت منظم، در یک عبارت رشتهای مورد استفاده قرار گیرد.
در این الگو، سازوکار ارزیابی دومرحلهای در موتور اسکریپت انجینایکس دچار ناهماهنگی میشود. در مرحله اول، موتور تعداد بایت موردنیاز برای تولید خروجی را محاسبه کرده و یک بافر با اندازه مناسب تخصیص میدهد. در مرحله دوم، بایتهای خروجی در همان بافر نوشته میشوند. هر دو مرحله از یک وضعیت مشترک مربوط به Captureها استفاده میکنند، اما اجرای عبارت منظم مربوط به دستور map در فاصله میان این دو مرحله، باعث بازنویسی این وضعیت میشود.
در این شرایط، مرحله اول که وظیفه اندازهگیری را بر عهده دارد، اندازه بافر را بر اساس Capture اولیه تعیین میکند؛ برای مثال، مقداری مانند $1که از تطبیق مسیر به دست آمده است. اما در مرحله دوم، یعنی زمان نوشتن دادهها، اطلاعات از یک Capture متفاوت وارد بافر میشوند؛ مقداری که اندازه آن میتواند تحت تأثیر ورودی مهاجم قرار داشته باشد. در نتیجه، بافری که در ابتدا با اندازه کوچکتری تخصیص داده شده است، ظرفیت کافی برای نوشتن این دادهها را ندارد و سرریز ایجادشده از نظر طول و محتوا، مستقیماً تحت تأثیر درخواست ارسالشده توسط مهاجم قرار میگیرد.
دامنه تأثیر و محصولات آسیبپذیر
این ضعف امنیتی همه سرورهای انجینایکس را تحت تأثیر قرار نمیدهد؛ زیرا وجود این آسیبپذیری تنها به نسخه انجینایکس وابسته نیست و شرایط پیکربندی سیستم نیز تعیینکننده است.
بر اساس اطلاعیه امنیتی منتشرشده توسط F5، این آسیبپذیری علاوه بر سرور اصلی انجینایکس و انجینایکس پلاس (NGINX Plus)، محصولات زیر را نیز تحت تأثیر قرار میدهد:
- NGINX Ingress Controller
- Gateway Fabric
- App Protect WAF
- Instance Manager
جزئیات فنی
آسیبپذیری انجینایکس با شناسه CVE-2026-42533 از نظر شدت، امتیاز 9.2 در CVSS 4.0و 8.1 در CVSS3.1 را دریافت کرده است. F5 سطح پیچیدگی حمله (Attack Complexity) برای این آسیبپذیری را بالا ارزیابی کرده است.
این آسیبپذیری تمامی نسخهها از 0.9.6 تا 1.31.2 را تحت تأثیر قرار میدهد؛ یعنی نسخههایی که قدمت آنها به سال 2011 بازمیگردد، زمانی که پشتیبانی از عبارتهای منظم به دستور map در انجینایکس اضافه شد.
آسیبپذیری CVE-2026-42533 بهصورت مستقل توسط بیش از 12 پژوهشگر امنیتی به F5 گزارش شد. این شرکت نیز از پژوهشگران به دلیل شناسایی و گزارش مستقل این ضعف امنیتی قدردانی کرد. در گزارش تغییرات (Changelog) رسمی، Mufeed VH از Winfunc Research و Maxim Dounin مسئول اصلاح این آسیبپذیری بودهاند.
Stan Shaw، یکی از پژوهشگران گزارشدهنده این آسیبپذیری که با نام cyberstan فعالیت میکند، تحلیل فنی کاملتری در مقایسه با گزارش F5 ارائه کرده است. F5 اعلام کرده است که اجرای کد از راه دور (RCE) در این آسیبپذیری به غیرفعال بودن مکانیزم ASLR یا امکان دور زدن آن وابسته است؛ با این حال، Shaw معتقد است این آسیبپذیری میتواند امکان دور زدن مکانیزم ASLR را برای مهاجم فراهم کند.
به گفته Shaw، فرآیند بازنویسی وضعیت Captureها در این آسیبپذیری تنها به یک حالت خاص محدود نمیشود و در شرایطی میتواند نتیجهای متفاوت ایجاد کند. اگر Capture بازنویسیشده طول کمتری نسبت به Capture اولیه داشته باشد، بافری که پیشتر با اندازه بزرگتری تخصیص یافته است، ممکن است اطلاعات مقداردهینشده از Heap را افشا کند. همچنین Shaw اعلام کرده است که در یک نصب پیشفرض Ubuntu 24.04، مهاجم تنها با ارسال یک درخواست GET بدون نیاز به احراز هویت میتواند آدرسهای حافظه مورد نیاز برای اجرای یک پیلود را بازیابی کند.
ادعای اجرای کد از راه دور فراتر از ارزیابی F5
Stan Shaw معتقد است خوانندگان گزارش امنیتی F5 ممکن است تصور کنند این آسیبپذیری انجینایکس در سیستمهای پیشفرض تنها منجر به حملات انکار سرویس (DoS) میشود؛ اما به گفته او، تأثیر این ضعف امنیتی فراتر از یک حمله DoS است.
این ادعا فراتر از ارزیابی رسمی F5 درباره دامنه تأثیر این آسیبپذیری محسوب میشود. Shaw اعلام کرده است که در آزمایشهای شخصی خود، این سناریو را با موفقیت کامل تأیید کرده است. با این حال، در زمان انتشار گزارش، او جزئیات فنی اکسپلویت و کد اثبات مفهوم (PoC) را منتشر نکرده بود؛ به همین دلیل، سایر پژوهشگران امکان بررسی و تأیید مستقل این ادعا را نداشتند.
پچ امنیتی و راهکار کاهش ریسک برای آسیبپذیری انجینایکس
راهکار اصلی برای رفع این آسیبپذیری، بهروزرسانی به نسخههای پچشده زیر است:
F5 برای سازمانهایی که امکان نصب فوری پچ امنیتی را ندارند، یک راهکار موقت ارائه کرده است. این راهکار شامل تغییر دستورهای Map مبتنی بر عبارت منظم آسیبپذیر به Captureهای نامگذاریشده است.
به گفته Shaw، این تغییر پیکربندی میتواند مسیر اصلی سوءاستفاده از آسیبپذیری را مسدود کند و در بیشتر تنظیمات مؤثر باشد؛ با این حال، تمام سناریوهای ممکن را پوشش نمیدهد و همچنان یک مسیر دیگر برای ایجاد همان سرریز باقی میماند. اگر یک دستور Map همان گروه نامگذاریشده مورد استفاده در عبارت منظم مربوط به دستور Location را تعریف کند، مهاجم میتواند از یک مسیر پردازشی دیگر نیز به همان سرریز دست پیدا کند. Shaw این سناریو را با استفاده از ابزار پاکسازیکننده آدرس (AddressSanitizer) تأیید کرده است اما به گفته او، این مسیر در گزارش امنیتی F5 ذکر نشده است.
به گفته Shaw، تنها راهکار کامل برای برطرف کردن این ضعف امنیتی، بهروزرسانی به نسخههای NGINX 1.30.4 یا NGINX 1.31.3 است.
شناسایی پیکربندیهای در معرض ریسک
تعداد پیکربندیهایی که تحت تأثیر این آسیبپذیری انجینایکس قرار میگیرند، محدود است. برای شناسایی پیکربندیهای آسیبپذیر، باید به دنبال یک Map مبتنی بر عبارت منظم بود که متغیر خروجی آن در یک عبارت رشتهای، در کنار یک Capture شمارهدار مانند $1 یا $2 از یک تطبیق قبلی عبارت منظم استفاده شده باشد؛ بهخصوص زمانی که Capture قبل از متغیر Map قرار گرفته باشد.
Stan Shaw یک ابزار اسکن منتشر کرده است که این بررسی را بهصورت خودکار روی فایلهای پیکربندی انجام میدهد، مسیر فایلهای Include را نیز دنبال میکند و تنها الگوهایی را علامتگذاری میکند که قابلیت سوءاستفاده از آسیبپذیری را دارند. این ابزار برای اجرای اکسپلویت طراحی نشده و یک محصول رسمی از سوی شرکت ارائهدهنده نیز محسوب نمیشود.
شباهت با آسیبپذیریهای قبلی
این آسیبپذیری انجینایکس با شناسه CVE-2026-42533 سومین مورد از سرریز Heap در کد ارزیابی عبارتها (Expression Evaluation) این وبسرور طی حدود دو ماه اخیر محسوب میشود. پیش از این، آسیبپذیری Rift با شناسه CVE-2026-42945 در ماه می و چند روز بعد، ضعف مربوط به Captureهای دارای همپوشانی (Overlapping Captures) در ماژول Rewrite با شناسه CVE-2026-9256 گزارش شدند.
هر سه آسیبپذیری به یک دسته مشترک تعلق دارند؛ جایی که موتور اسکریپت دومرحلهای انجینایکس در مرحله اول اندازه مورد نیاز برای بافر را محاسبه میکند و در مرحله دوم دادهها را داخل آن مینویسد. مشکل زمانی ایجاد میشود که حجم دادههای نوشتهشده از اندازهای که در مرحله اول محاسبه شده بیشتر باشد و در نتیجه، سرریز حافظه رخ دهد.
با وجود شباهت در ریشه فنی، عامل ایجاد این سرریز در هر یک از این آسیبپذیریها متفاوت است:
- CVE-2026-42945 (Rift): یک فلگ قدیمی (Stale Flag) در منطق پردازش باعث بروز ضعف میشود.
- CVE-2026-9256: همپوشانی Captureها در ماژول Rewrite عامل اصلی ایجاد آسیبپذیری است.
- CVE-2026-42533: بازنویسی وضعیت Captureها باعث ایجاد شرایط لازم برای وقوع سرریزHeap میشود.
به گفته پژوهشگران، ضعف مشترک میان این آسیبپذیریها به طراحی دومرحلهای موتور اسکریپت انجینایکس بازمیگردد؛ طراحی که در آن مرحله دوم، بدون بررسی مجدد، به نتیجه اندازهگیری مرحله اول اعتماد میکند.
انتشار اکسپلویت عمومی
مجموعه DepthFirst یک اکسپلویت زنجیرهای کامل برای CVE-2026-42533 منتشر کرد. این اکسپلویت با ترکیب افشای حافظه (Memory Leak) در ماژول Stream و سرریز Heap، امکان بازیابی آدرسهای حافظه، دور زدن مکانیزم ASLR و در نهایت اجرای دستور مهاجم را فراهم میکند.
این اکسپلویت برای یک محیط مشخص داکر(Docker) در مخزن DepthFirst تنظیم شده و به نسخه مشخصی از اوبونتو، پکیجهای نرمافزاری و کد منبع انجینایکس وابسته است.













