نسخههای 4.2.1 و قدیمیتر Elementor Pro ممکن است به دلیل یک نقص اجرای کد از راه دور (RCE) بدون نیاز به احراز هویت در فیلد آپلود فایلِ ویجت Forms مورد تهدید قرار گیرند؛ این مشکل در نسخه 4.2.2 اصلاح شده است، بنابراین سایتهایی که از کدهای قدیمیتر استفاده میکنند باید فوراً آن را بهروزرسانی کنند.
این باگ چه کاری انجام میدهد
این آسیبپذیری دارای امتیاز CVSS 9.0 است، به این معنی که مهاجمی که بتواند به یک سایت آسیبپذیر دسترسی پیدا کند، میتواند بدون ورود به سیستم یا ارائه هرگونه اعتبارنامهای، کدهای PHP دلخواه را روی سرور اجرا کند. مشکل در نحوه پردازش آپلود فایلها توسط Elementor Pro در ویجت Forms نهفته است. این افزونه دو حلقه مجزا را اجرا میکند: یکی برای اعتبارسنجی هر فایل آپلود شده و دیگری برای ذخیره فایل در دایرکتوری آپلودهای قابل دسترس از طریق وب.
یک مهاجم میتواند یک درخواست واحد شامل دو فایل ایجاد کند. به فایل اول نام خالی داده میشود که باعث میشود حلقه اعتبارسنجی از بررسی آن چشمپوشی کند. فایل دوم که یک اسکریپت PHP مخرب است، از حلقه دوم عبور کرده و در یک پوشه عمومی نوشته میشود. از آنجایی که Elementor Pro نام فایلهای آپلود شده را با استفاده از یک برچسب زمانی (timestamp) تعیین میکند، مهاجم میتواند نام فایل را پیشبینی کرده و بعداً مستقیماً برای اجرای کد، آن را درخواست کند.
این نقص چگونه پدید آمد
طراحی دو حلقهای با هدف مستقل نگه داشتن اعتبارسنجی و ذخیرهسازی انجام شده بود، اما نبود یک بررسی صحت (sanity check) مشترک باعث شد ترفند «نام خالی» از سیستم عبور کند. این باگ بر تمام نصبهایی که از فیلد آپلود فایلِ ویجت Forms استفاده میکنند تأثیر میگذارد، صرفنظر از اینکه آیا مدیر سایت این ویژگی را برای بازدیدکنندگان فعال کرده است یا خیر.
چه کسانی در معرض خطر هستند
هر سایت WordPress که نسخه 4.2.1 یا نسخههای قدیمیتر Elementor Pro را نصب کرده باشد، در معرض خطر است. از آنجایی که این اکسپلویت نیازی به احراز هویت ندارد، حتی سایتهایی که دسترسی مدیریت را محدود کردهاند نیز آسیبپذیر هستند. بهرهبرداری موفقیتآمیز، کنترل کامل محیط میزبانی را در اختیار مهاجم قرار میدهد و راه را برای سرقت دادهها، تغییر ظاهر سایت (defacement) یا استقرار باجافزار باز میکند.
اکنون چه باید کرد
نسخه نصب شده را با دستور WordPress CLI بررسی کنید:
wp plugin list --name=elementor-pro --field=versionاگر خروجی نسخه 4.2.1 یا پایینتر را نشان داد، فوراً به نسخه 4.2.2 یا بالاتر بهروزرسانی کنید. این بهروزرسانی، منطق ناقص آپلود را با یک روال واحد و اتمیِ «اعتبارسنجی و ذخیرهسازی» جایگزین میکند که از دور زدن سیستم با نام خالی جلوگیری میکند.
پس از ارتقا، دایرکتوری آپلودها را برای یافتن هرگونه فایل PHP که با الگوی برچسب زمانی مورد استفاده افزونه مطابقت دارد، بازرسی کرده و آنها را حذف کنید.
تا زمانی که وصله (patch) اعمال نشده است، بهویژه در سایتهای با ترافیک بالا، غیرفعال کردن فیلد آپلود فایل در فرمهای عمومی را مد نظر قرار دهید.
دیدگاه مخالف
برخی از توسعهدهندگان استدلال میکنند که خطر محدود است، زیرا این اکسپلویت مستلزم آن است که ویجت Forms با یک فیلد آپلود فایل که به صورت عمومی قابل دسترسی است، پیکربندی شده باشد. با این حال، بسیاری از سایتهای مبتنی بر Elementor چنین فرمهایی را برای تماس، درخواستهای شغلی یا محتوای تولید شده توسط کاربر ارائه میدهند، که این موضوع باعث میشود این شرایط به قدری رایج باشد که آسیبپذیری، بحرانی (critical) تلقی شود.
آنچه باید در ادامه دنبال کرد
محققان امنیتی انتظار دارند با گزارش تلاشهای بیشتر برای بهرهبرداری از سوی سایتها، یادداشتهای هشداردهنده بیشتری منتشر شود. اخبار رسمی Elementor و پایگاههای داده معتبر آسیبپذیری را برای هرگونه وصله یا راهکار مقابلهای بعدی دنبال کنید.
خلاصه کلام: نقص RCE در نسخههای 4.2.1 و قدیمیتر Elementor Pro، یک بردار حمله با شدت بالا و بدون نیاز به ورود به سیستم است. بهروزرسانی به نسخه 4.2.2 تنها دفاع قابل اعتماد است؛ تأخیر در این کار، سرور و دادههای شما را در معرض خطر جدی قرار میدهد.
