کشف یک آسیبپذیری بحرانی در Apache Struts 2 با قابلیت اجرای کد از راه دور
یک #آسیبپذیری امنیتی مهم اجرای کد از راه دور (RCE)، در چارچوب برنامهی محبوب Apache Struts کشف شده که میتواند مهاجمین راه دور را قادر به اجرای کدهای مخرب در سرورهای آسیبدیده کند. این آسیبپذیری (CVE-2018-11776) در هستهی Apache Struts قرار دارد و به دلیل اعتبارسنجی نامناسب از ورودیهای دریافتشده از سوی کاربر بهوجود میآید.
به گزارش ایلنا به نقل از مرکز امداد و هماهنگی عملیات رخدادهای رایانهای کشور، این سوءاستفادهی Apache Struts میتواند با مراجعه به یک URL خاص بکاررفته در سرور وب آسیبدیده، باعث حملهی مهاجم برای اجرای کد مخرب و درنهایت کنترل کامل بر روی سرور هدفی شود که در حال اجرای برنامهی آسیبپذیر است.
برای آسیبپذیر بودن باید دو شرط زیر برقرار باشد:
• پرچم "alwaysSelectFullNamespace" در تنظیمات Struts به "true" تنظیم شده باشد. باید توجه داشت که در افزونهی محبوب Struts Convention، این مقدار بهطور خودکار تنظیم شده است.
• فایل پیکربندی Struts حاوی یک تابع "action" یا "url" باشد که در پیکربندی آنها، namespace مشخص نشده یا بهطور مبهم به صورت "/*" مشخص شده است.
اگر در پیکربندی برنامه این شرایط وجود نداشته باشد، احتمالاً سیستم آسیبپذیر نیست ولی اگر این شرایط برقرار باشد، دو بردار حملهی زیر برای بهرهبرداری از این آسیبپذیری بر روی سیستم، قابل اجرا خواهد بود.
1. بردار حملهی result بدون namespace
در Struts سه نوع result وجود دارد که اگر بدون namespace مورد استفاده قرار بگیرند، ناامن خواهند بود. result ها در فایل پیکربندی و یا در داخل کدهای جاوا قابل تعریف هستند. سه نوع result زیر آسیبپذیر هستند:
• Redirect action : این عمل، بازدیدکنندگان را به سمت URL متفاوتی هدایت میکند.
• Action chaining: روشی است که در آن چندین عمل، به یک توالی تعریفشده یا یک جریان کار، زنجیر میشوند.
• Postback result: پارامترهای درخواست را بهصورت فرمی پردازش میکند که فوراً یکpostback را به زنجیرهی مقصد و یاpostback مشخصی ارسال میکند.
2. بردار حملهی استفاده از برچسبهای url در الگوها
Apache Struts در فایل پیکربندی و در داخل برچسب ، از الگوهای صفحه پشتیبانی میکند. اگر الگو از بستهای ارجاع داده شده باشد که در آن، ویژگی namespace تعریف نشده باشد، استفاده از برچسب url بهطور بالقوه ناامن خواهد بود.
بهگفتهی محققان امنیتی، یک کد اثبات مفهومی از این آسیبپذیری در گیتهاب منتشر شده که مهاجمان به راحتی میتوانند از آن بهرهبرداری کنند.
تمام برنامههای کاربردی که از نسخههای Apache Struts (نسخههای پشتیبانیشده از Struts 2.3 تا Struts 2.3.34 و Struts 2.5 تا Struts 2.5.16 و حتی برخی از نسخههای پشتیبانینشدهی Apache Struts) استفاده میکنند، بهطور بالقوه نسبت به این نقص آسیبپذیر هستند (حتی اگرافزونههای جانبی زیادی نداشته باشند).
این آسیبپذیری در نسخههای Struts 2.3.35 و Struts 2.5.17 وصله شده است. بنابراین، به کاربران و مدیران بهشدت توصیه میشود تا مؤلفههای Apache Struts خود را به آخرین نسخه ارتقاء دهند.