آسيبپذيری بحرانی در APACHE STRUTS 2 شناسایی شدهاست که قابليت اجرای کد از راه دور دارد.
به گزارش افتانا (پایگاه خبری امنیت فناوری اطلاعات)، یک آسیبپذیری امنیتی مهم اجرای کد از راه دور (RCE) در چارچوب برنامه محبوب Apache Struts کشف شدهاست که میتواند مهاجمان راه دور را قادر به اجرای کدهای مخرب در سرورهای آسیبدیده کند. این آسیبپذیری (CVE-2018-11776) در هسته Apache Struts قرار دارد و بهدلیل اعتبارسنجی نامناسب از ورودیهای دریافتشده از سوی کاربر بهوجود میآید.
این سوءاستفاده Apache Struts میتواند با مراجعه به یک URL خاص بهکاررفته در سرور وب آسیبدیده، باعث حمله مهاجم برای اجرای کد مخرب و درنهایت کنترل کامل بر روی سرور هدفی شود که در حال اجرای برنامه آسیبپذیر است.
برای آسیبپذیر بودن باید دو شرط زیر برقرار باشد:
• پرچم "alwaysSelectFullNamespace" در تنظیمات Struts به "true" تنظیم شدهباشد. باید توجه داشت که در افزونه محبوب Struts Convention، این مقدار بهطور خودکار تنظیم شدهاست.
• فایل پیکربندی Struts حاوی یک تابع "action" یا "url" باشد که در پیکربندی آنها، namespace مشخص نشده یا بهطور مبهم به صورت "/*" مشخص شدهست.
اگر در پیکربندی برنامه این شرایط وجود نداشتهباشد، احتمالاً سیستم آسیبپذیر نیست ولی اگر این شرایط برقرار باشد، دو بردار حمله زیر برای بهرهبرداری از این آسیبپذیری بر روی سیستم، قابل اجرا خواهدبود.
۱. بردار حمله result بدون namespace
در Struts سه نوع result وجود دارد که اگر بدون namespace مورد استفاده قرار بگیرند، ناامن خواهندبود. result ها در فایل پیکربندی و یا در داخل کدهای جاوا قابل تعریف هستند. سه نوع result زیر آسیبپذیر هستند:
• Redirect action : این عمل، بازدیدکنندگان را به سمت URL متفاوتی هدایت میکند.
• Action chaining: روشی است که در آن چندین عمل، به یک توالی تعریفشده یا یک جریان کار، زنجیر میشوند.
• Postback result: پارامترهای درخواست را بهصورت فرمی پردازش میکند که فوراً یکpostback را به زنجیرهی مقصد و یاpostback مشخصی ارسال میکند.
۲. بردار حمله استفاده از برچسبهای 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 خود را به آخرین نسخه ارتقا دهند.