Apache (آپاچی)، نهم دسامبر ۲۰۲۳ هشداری در خصوص یک نقص امنیتی مهم در فریمورک اپلیکیشن وب منبع باز Struts 2 منتشر کرد که میتواند منجر به اجرای کد از راه دور شود. آسیب پذیری بحرانی RCE در Apache Struts 2 که با شناسه CVE-2023-50164 دنبال میشود، ریشه در «منطق آپلود فایل» معیوب (ناقص) دارد که میتواند پیمایش مسیر غیرمُجاز را فعال کند و تحت شرایط خاصی برای آپلود یک فایل مخرب و اجرای کد دلخواه مورد سوء استفاده قرار گیرد. Struts یک فریمورک جاوا است که از معماری MVCبرای ساخت برنامههای کاربردی وب سازمانی استفاده میکند.
استیون سیلی محقق Source Incite، این نقص امنیتی را کشف و گزارش نمود. وی اذعان داشت که این آسیب پذیری بر نسخههای نرم افزاری زیر تأثیر میگذارد:
- Struts 2.3.37 (EOL)
- Struts 2.5.0 – Struts 2.5.32
- Struts 6.0.0 – Struts 6.3.0
فرآیند حمله
فرآیند حمله به شرح زیر است:
- مهاجم ابتدا فرآیند شناسایی را انجام میدهد و یک وب سایت یا برنامه وب را شناسایی میکند که از نسخه آسیب پذیر Apache Struts و مسیر URL آپلود فایل استفاده مینماید.
- مهاجم یک فایل مخرب که معمولاً یک فایل JSP یا web shell (شِل وب) میباشد، آماده میکند.
- مهاجم سپس یک درخواست ویژه برای آپلود فایل ایجاد مینماید. این درخواست شامل دادههای دستکاری شده، مانند نام و مسیر فایل است که پارامترهای آپلود فایل را تغییر میدهد.
- در درخواست آپلود ذکر شده در مرحله ۳، مهاجم شامل دستورات سیستمی است که از آسیب پذیری پیمایش مسیر سوء استفاده میکند. این فرمانها به سرور دستور میدهند که فایل را خارج از دایرکتوریِ آپلودِ متداول قرار دهد. این مرحله، پیمایش مسیر نام دارد.
- مهاجم، درخواست آپلود را به سروری که نسخههای آسیبپذیر Apache Struts را اجرا میکند، ارسال خواهد کرد. در صورت موفقیت آمیز بودن ارسال، آنگاه سرور، فایل مخرب یا شِل وب را در یک مکان یا دایرکتوری که میتوان آن را اجرا کرد ذخیره میکند.
- مهاجم سپس از طریق یک مرورگر وب یا یک اسکریپت خودکار به فایل مخرب آپلود شده دسترسی پیدا خواهد کرد. دسترسی به این فایل باعث اجرای کد مخرب یا شِل وب در وب سرور میشود.
- هنگامی که کد در مرحله ۶ اجرا میگردد، مهاجم میتواند اقدامات اضافی را بر روی سرور به انجام رساند. این موارد میتوانند از سرقت دادههای حساس، تغییر محتوای وب سایت تا کنترل کامل سرور وب را شامل شوند.
- بسته به اهداف یا انگیزه مهاجم، آنها ممکن است دسترسی پنهانی را برای بهره برداری در آینده حفظ کنند و یا از سرور تحت نفوذ برای انجام حملات بیشتر سوء استفاده نمایند.
این آسیب پذیری در نسخههای 2.5.33 و 6.3.0.2 و بالاتر برطرف گشته و تا کنون راهی برای سوء استفاده مجدد از این آسیب پذیری گزارش نشده است. پشتیبانهای پروژه طی گزارشی که در هفتم دسامبر منتشر گردید، به همه توسعه دهندگان اکیدا توصیه کردند که به روزرسانیها را هر چه سریعتر دریافت و نصب کنند.
بر اساس پستی که موسسه Shadowserver در X (توئیتر سابق) به اشتراک گذاشته است، عوامل تهدید سعی دارند از آسیب پذیری اصلاح نشده سرورهای Apache Struts پس از انتشار یک کد اثبات مفهوم (PoC) سوء استفاده کنند.
این آسیب پذیری به طور فعال برای نصب web shellها (شِل وب) و متعاقبا ایجاد دسترسی در شبکه قربانیهای مورد نظر مورد سوء استفاده قرار میگیرد. در حالی که CVE-2023-50164 یک آسیب پذیری امنیتی بحرانی است، انجام اسکن انبوه و سوء استفاده از این آسیب پذیری برای مهاجمان دشوار خواهد بود. پیش شرطهای متعدد مورد نیاز به منظور بهره برداری از این نقص به همراه الزامات، جهت دسترسی به یک endpoint بارگذاری فایل تعریف شده توسط برنامه، اکسپلویت انبوه را به یک چالش تبدیل میکند.
منابع
https://thehackernews.com/2023/12/new-critical-rce-vulnerability.html
https://cwiki.apache.org/confluence/display/WW/S2-066
https://struts.apache.org/announce-2023#a20231207-1
https://www.cert.ssi.gouv.fr/alerte/CERTFR-2023-ALE-013/
https://www.praetorian.com/blog/cve-2023-50164-apache-struts-file-upload-vulnerability/
https://www.akamai.com/blog/security-research/apache-struts-cve-exploitation-attempts