کشف RCE پیشازاحراز روی Kemp LoadMaster
خلاصهٔ کاملتر
به گزارش آزمایشگاه watchTowr، اینبار سراغ Kemp LoadMaster رفتن؛ یه لودبالانسر و ADC از شرکت Progress (همون سازندهٔ MoveIT) که لبهٔ خیلی از شبکههای سازمانی میشینه. آسیبپذیری CVE-2026-8037 یه RCE پیشازاحرازه که هر کسی به API دستگاه دسترسی داشته باشه میتونه ازش سوءاستفاده کنه. نسخههای GA تا v7.2.63.1 و LTSF تا v7.2.54.17 وقتی API فعال باشه آسیبپذیرن.
محققها با مقایسهٔ نسخهٔ آسیبپذیر و نسخهٔ بعدی فهمیدن فقط یه تابع عوض شده: escape_quotes. کار این تابع اینه که ورودی کاربر رو امن کنه تا بشه داخل یه آرگومان شل که با تککوتیشن بسته شده قرارش داد، و برای این کار فقط تککوتیشنها رو escape میکنه. اما همین تابع دو تا مشکل داشت.
مشکل اول این بود که بافر خروجی رو با malloc میگرفت که حافظهش مقداردهی اولیه نمیشه، و مشکل دوم اینکه رشتهٔ escapeشده رو null-terminate نمیکرد. به گفتهٔ نویسنده، وصله دقیقاً همین دوتا رو درست کرد: malloc به calloc تغییر کرد تا بافر صفر پر بشه، و یه null terminator بعد از خروجی اضافه شد.
result = calloc(1u, 4 * (strlen(user_input) + 1) + 28); // بهجای malloc
*end = 0; // null terminator جاافتادهحالا چرا یه بافر بدون null به RCE میرسه؟ چون این مقدار در نهایت با __sprintf_chk داخل یه رشتهٔ دستور مثل validuser -u '...' -p '...' جاسازی میشه و اون رشته با system() اجرا میشه. وقتی رشته null-terminate نشده باشه، تابع sprintf از مرز بافر رد میشه و بایتهای چانک آزادشدهٔ heap کناری رو هم بهعنوان بخشی از رشته میخونه.
به گفتهٔ نویسنده، مهاجم میتونه با فرستادن تعداد زیادی جفت کلید/مقدار توی بدنهٔ JSON، حافظهٔ heap رو اسپری کنه تا یه چانک حاوی محتوای دلخواهش درست کنار بافر مقدار apiuser بشینه. بعد با سوءاستفاده از خودِ منطقِ escape تککوتیشن، متادیتای اولیهٔ چانک آزادشده رو پاک میکنه تا خوندن رشته با رسیدن به بایت null متوقف نشه و ادامه پیدا کنه تا به محتوای تزریقشده برسه.
این آسیبپذیری رو Syed Ibrahim Ahmed از TrendAI Research کشف کرده و تحت شناسهٔ ZDI-26-342 با عنوان اجرای کد از راه دور بهخاطر حافظهٔ مقداردهینشدهٔ apiuser منتشر شده. جمعبندی watchTowr اینه که دستگاههای لبهای بهجای اینکه محافظ باشن، اغلب خودشون تبدیل به راه ورود میشن؛ پس هر کسی LoadMaster داره باید سریع به نسخهٔ وصلهشده بره.
نکات کلیدی:
- CVE-2026-8037 یه RCE پیشازاحراز روی Kemp LoadMaster از شرکت Progress هست
- ریشهٔ باگ: تابع escape_quotes بافرش رو با malloc میگرفت و رشته رو null-terminate نمیکرد
- وصله فقط دوتا تغییر داره: malloc به calloc و اضافهشدن یه null terminator
- نبود null باعث میشه sprintf از مرز بافر رد بشه و محتوای heap کناری وارد دستور بشه
- کشف توسط Syed Ibrahim Ahmed از TrendAI Research (ZDI-26-342)؛ نسخههای GA تا v7.2.63.1 و LTSF تا v7.2.54.17 با API فعال آسیبپذیرن




