توضیحات

آسیب ‌پذیری بحرانی CVE-2026-32475 در پلاگین Elementor Pro وردپرس از نوع آپلود فایل دلخواه بدون احراز هویت است که می‌تواند در شرایط خاص منجر به اجرای کد از راه دور (RCE) شود.

این آسیب ‌پذیری در دسته آپلود فایل با نوع غیرمجاز (Unrestricted Upload of File with Dangerous Type) مطابق با CWE-434 قرار می‌گیرد؛ این ضعف زمانی رخ می‌دهد که ساز و کار اعتبارسنجی نتواند از آپلود فایل‌ هایی با پسوندهای غیرمجاز یا قابل اجرا در سمت سرور جلوگیری کند. Elementor Pro نسخه پولی ابزار ساخت صفحه Elementor است که قابلیت‌ های پیشرفته‌ ای از جمله ایجاد فرم‌ های تماس، درخواست استخدام و پشتیبانی را در اختیار مدیران وب ‌سایت قرار می‌دهد. یکی از امکانات ماژول Forms، فیلد آپلود فایل است که به بازدید کنندگان اجازه می‌دهد فایل‌ های مورد نیاز را از طریق فرم ‌های منتشرشده ارسال کنند. آسیب ‌پذیری مذکور در نحوه اعتبارسنجی و پردازش فایل‌ های ارسالی از طریق این فیلد وجود دارد و می‌تواند به مهاجم راه دور و بدون نیاز به احراز هویت اجازه دهد با دور زدن ساز و کار اعتبارسنجی، فایل‌ های اجرایی، از جمله فایل‌ های PHP را آپلود کند. در صورتی که پیکربندی سرور امکان اجرای این فایل‌ ها را در مسیر ذخیره‌ سازی فراهم کند، این ضعف می‌تواند منجر به اجرای کد از راه دور (RCE) شود.

ریشه این آسیب ‌پذیری به ناهماهنگی میان دو لوپ(loop)  مجزا در فایل modules/forms/fields/upload.php بازمی‌گردد. متد validation() وظیفه بررسی فایل‌ های ارسالی و اعتبارسنجی پسوند آن‌ ها را بر عهده دارد؛ در مقابل، متد process_field() فایل ‌ها را پردازش کرده و آن‌ ها را به مسیر ذخیره‌ سازی منتقل می‌کند. پلاگین برای جلوگیری از آپلود فایل‌ های دارای پسوند غیرمجاز، از تابع is_file_type_valid() استفاده می‌کند که پسوند فایل را با فهرست پسوندهای مجاز مقایسه کرده و هم ‌زمان، از پذیرش فایل ‌هایی با پسوندهای موجود در بلاک ‌لیست جلوگیری می‌کند. این فهرست شامل پسوندهای اجرایی مانند php، php3، php4، php5 و phtml است؛ بنابراین، ساز و کار اعتبارسنجی پلاگین به ‌طور معمول مانع آپلود مستقیم فایل ‌هایی با پسوند .php می‌شود.

با این ‌حال، مشکل اصلی در نحوه مدیریت بخش ‌های فاقد فایل در درخواست آپلود چند بخشی (Multipart Request) رخ می‌دهد. منظور از بخش فاقد فایل، بخشی از درخواست است که برای آن فایلی انتخاب نشده و PHP وضعیت آن را با UPLOAD_ERR_NO_FILE مشخص می‌کند؛ این وضعیت با ارسال یک فایل واقعی اما فاقد محتوا تفاوت دارد. در متد validation()، در صورت اختیاری بودن فیلد آپلود و وجود بخشی فاقد فایل در درخواست، دستور بازگشت (return) کل متد را متوقف می‌کند؛ در نتیجه، بخش‌ های بعدی درخواست اعتبارسنجی نمی‌شوند. در مقابل، متدprocess_field()  در مواجهه با همین وضعیت از دستور عبور از بخش فعلی (continue) استفاده می‌کند. این دستور از پردازش بخش فعلی صرف‌ نظر می‌کند و اجرای لوپ را برای رسیدگی به بخش‌ های بعدی ادامه می‌دهد.

این تفاوت در عملکرد دو لوپ، امکان دور زدن اعتبارسنجی را فراهم می‌کند. مهاجم می‌تواند ابتدا بخشی فاقد فایل و سپس فایلی با پسوند .php را در همان درخواست آپلود ارسال کند. در این حالت، متد validation() با شناسایی بخش نخست و دریافت وضعیت UPLOAD_ERR_NO_FILE، پیش از بررسی فایل دوم متوقف می‌شود؛ اما متد process_field() از بخش نخست عبور کرده و فایل PHP را برای ذخیره‌ سازی پردازش می‌کند. در نتیجه، فایل بدون اعتبارسنجی صحیح پسوند به مرحله ذخیره‌ سازی می‌رسد. بنابراین، مشکل اصلی نبود بلاک ‌لیست نیست، بلکه تفاوت در نحوه پردازش بخش‌ های فاقد فایل در دو متد است که باعث می‌شود فایل‌ های غیرمجاز از بررسی پسوند عبور کنند.

هنگام ذخیره ‌سازی، پلاگین نام اصلی فایل را کنار می‌گذارد و با استفاده از تابع uniqid() نام جدیدی تولید می‌کند؛ سپس پسوند فایل را به آن اضافه کرده و با تابع wp_unique_filename از تکراری نبودن نام نهایی اطمینان حاصل می‌کند. فایل ‌ها در مسیر عمومی wp-content/uploads/elementor/forms/ ذخیره می‌شوند. از این ‌رو، اگر مهاجم با دور زدن اعتبارسنجی، فایل PHP مخربی را در این مسیر قرار دهد و سرور نیز اجازه اجرای PHP را در آن بدهد، دسترسی مستقیم به فایل می‌تواند منجر به اجرای کد از راه دور با سطح دسترسی پردازه وب ‌سرور شود.

برای سوء استفاده از این آسیب ‌پذیری، دست ‌کم یک صفحه منتشرشده حاوی ویجت Form و فیلد File Upload لازم است. فرم از طریق درخواست AJAX با نام elementor_pro_forms_send_form ارسال می‌شود. اطلاعات لازم برای ساخت این درخواست، از جمله post_id، form_id و شناسه فیلد آپلود، در کد HTML صفحه عمومی قابل مشاهده است. طبق تحلیل Patchstack، این درخواست به نشست کاربری یا توکن nonce نیاز ندارد؛ بنابراین، مهاجم بدون احراز هویت می‌تواند آن را ارسال کند. همچنین، اختیاری بودن فیلد آپلود در این آسیب ‌پذیری نقش مهمی دارد؛ زیرا اگر درخواست شامل بخشی بدون فایل باشد، اعتبارسنجی زودتر از موعد متوقف می‌شود و ممکن است فایل‌ های بعدی بدون بررسی پسوند پردازش شوند.

تابع uniqid() برای تولید نام فایل از مقادیر مبتنی بر زمان استفاده می‌کند و برای تولید شناسه‌ های امن و غیرقابل ‌پیش ‌بینی از نظر رمزنگاری طراحی نشده است. بنابراین، مهاجم ممکن است با استفاده از زمان تقریبی آپلود، نام فایل را حدس بزند. همچنین، اگر اعلان ایمیلی و پاسخ خودکار فرم فعال باشند، قالب [all-fields] ممکن است آدرس فایل آپلود شده را در متن ایمیل درج کند. در این صورت، مهاجم می‌تواند آدرس دقیق فایل را از طریق ایمیل به دست آورد. البته، امکان استفاده از این روش به تنظیمات فرم و نحوه ارسال ایمیل بستگی دارد.

سوء استفاده از این آسیب ‌پذیری از طریق شبکه و بدون نیاز به احراز هویت یا تعامل کاربرامکان‌ پذیر است. در صورت موفقیت حمله، محرمانگی (Confidentiality)، یکپارچگی (Integrity) و دسترس ‌پذیری (Availability) سامانه می‌توانند به ‌شدت تحت تأثیر قرار گیرند. همچنین، دامنه تأثیر حمله می‌تواند از بخش آسیب ‌پذیر فراتر رود.

این آسیب ‌پذیری در نسخه 4.2.2 پلاگین Elementor Pro پچ شده است و کاربران برای رفع آن باید پلاگین را به این نسخه یا نسخه ‌های جدیدتر بروزرسانی کنند.

CVSS

Score Severity Version Vector String
9.0 CRITICAL 3.1 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H
هشدار سایبری CVE-2026-32475
شکل 1: تفسیر جدول CVSS

لیست محصولات آسیب پذیر

Versions Product
<= 4.2.1 Elementor Pro

لیست محصولات بروز شده

Versions Product
 4.2.2 or later Elementor Pro

استفاده محصول در ایران

در این جدول، تعداد صفحات ایندکس ‌شده در گوگل با دامنه .ir که Elementor Pro را ذکر کرده اند، ثبت شده است. این داده صرفاً برای برآورد تقریبی حضور محصولات در وب ایران استفاده شده و نمایانگر میزان نصب دقیق و استفاده واقعی نیست.

Approx. Usage in .ir Domain via Google (Total Pages) Search Query (Dork) Product
126,000 site:.ir “Elementor Pro” Elementor Pro

نتیجه گیری

این آسیب‌ پذیری در پلاگین Elementor Pro وردپرس به مهاجم اجازه می‌دهد بدون نیاز به احراز هویت و با دور زدن ساز و کار اعتبارسنجی، فایل ‌های دلخواه، از جمله فایل‌ های PHP را روی سرور آپلود کند. در صورتی که سرور امکان اجرای فایل‌ های PHP را در مسیر ذخیره‌ سازی فراهم کرده باشد، سوء استفاده از این ضعف می‌تواند منجر به اجرای کد از راه دور (RCE) شود. با توجه به شدت بحرانی این آسیب‌ پذیری و امکان سوء استفاده از آن بدون نیاز به احراز هویت، اقدامات زیر برای رفع آسیب ‌پذیری و پیشگیری از حملات احتمالی توصیه می‌شود:

  • بروزرسانی پلاگین Elementor Pro: پلاگین Elementor Pro به نسخه 2.2 یا جدیدتر بروزرسانی شود. در این نسخه، منطق پردازش ورودی ‌های فاقد فایل در مراحل اعتبارسنجی و انتقال فایل اصلاح شده است. همچنین، پسوند فایل در تابع process_field() و پیش از انتقال آن به مسیر ذخیره‌ سازی، مجدداً بررسی می‌شود تا از دور زدن اعتبارسنجی و آپلود فایل ‌های غیرمجاز جلوگیری شود. بروزرسانی پلاگین به نسخه 4.2.2 یا جدیدتر، مهم ‌ترین راهکار برای رفع این آسیب ‌پذیری و جلوگیری از سوء استفاده از آن است.
  • بررسی فایل‌ های آپلود شده: مسیر wp-content/uploads/elementor/forms/ برای شناسایی فایل‌ های ناشناس یا فایل‌ هایی با پسوندهای غیرمجاز، به‌ ویژه .php، بررسی شود. فایل ‌های مشکوک باید از نظر ماهیت و عملکرد ارزیابی شوند و در صورت تأیید مخرب بودن، از سرور حذف گردند. این اقدام به شناسایی و پاک ‌سازی فایل‌ هایی کمک می‌کند که ممکن است مهاجم پیش از بروزرسانی پلاگین روی سرور آپلود کرده باشد.
  • غیرفعال ‌کردن موقت قابلیت آپلود فایل: تا زمان بروزرسانی پلاگین، قابلیت آپلود فایل در فرم ‌های عمومی Elementor Pro غیرفعال شود. این اقدام از ارسال فایل از طریق فرم ‌های آسیب ‌پذیر جلوگیری کرده و احتمال سوء استفاده از آسیب ‌پذیری کاهش می‌دهد.
  • محدود سازی انواع فایل مجاز در فرم‌ ها: فیلدهای آپلود به انواع فایل ضروری و موردنیاز، مانند تصاویر یا اسناد مشخص، محدود شوند. این اقدام سطح ریسک ناشی از دریافت فایل‌ های غیرضروری را کاهش می‌دهد؛ با این‌ حال، به دلیل وجود ضعف در ساز و کار اعتبارسنجی، این محدودیت به ‌تنهایی برای رفع آسیب ‌پذیری کافی نیست و باید در کنار بروزرسانی پلاگین اعمال شود.

اجرای این اقدامات در کنار بروزرسانی پلاگین و بررسی فایل‌ های موجود، احتمال آپلود فایل‌ های مخرب، اجرای کد از طریق فایل ‌های PHP و تداوم سوء استفاده از آسیب‌ پذیری را کاهش می‌دهد.

امکان استفاده در تاکتیک‌ های MITRE ATT&CK (در زمان اجرای حمله)

Initial Access (TA0001)

مهاجم برای بهره ‌برداری از این آسیب ‌پذیری نیازی به هیچ ‌گونه احراز هویت یا دسترسی قبلی ندارد و می‌تواند از طریق اینترنت به وب ‌سایت هدف دسترسی پیدا کند. این نقص در دسته Exploit Public-Facing Application (T1190) قرار می‌گیرد، زیرا نقطه ورود، یک فرم آپلود فایل در یک صفحه عمومی Elementor Pro است که از طریق درخواست HTTP به آن دسترسی وجود دارد. شرط لازم برای آسیب‌ پذیری این است که سایت حداقل یک صفحه منتشرشده با ویجت فرم Elementor Pro داشته باشد که دارای فیلد آپلود فایل باشد و آن فیلد به صورت اجباری (required) تنظیم نشده باشد.

Execution (TA0002)

هستهٔ اصلی آسیب ‌پذیری در فاز اجرای کد قرار دارد و ناشی از ناهماهنگی منطقی بین دو حلقه در ماژول Forms است. تابع validation() برای بررسی پسوند فایل از یک حلقه استفاده می‌کند، در حالی که تابع process_field() برای جا به ‌جایی فایل از حلقه ‌ای جداگانه بهره می‌برد. زمانی که مهاجم یک درخواست multipart با دو بخش فایل برای یک فیلد ارسال می‌کند، بخش اول خالی است (با خطای UPLOAD_ERR_NO_FILE) و بخش دوم حاوی فایل PHP. در این حالت، تابع validation() با دیدن بخش اول زودتر بازمی‌گردد و بخش دوم را هرگز بررسی نمی‌کند؛ اما تابع process_field() بخش خالی را نادیده می‌گیرد و بخش دوم (فایل PHP) را به پوشه عمومی منتقل می‌کند. سپس مهاجم با یک درخواست GET مستقیم به فایل آپلود شده، آن را اجرا کرده و به اجرای کد از راه دور (RCE) دست می‌یابد.

Persistence (TA0003)

خود آسیب‌ پذیری یک مکانیسم ماندگاری نیست، اما فایل PHP آپلود شده (که اغلب به عنوان Web Shell طراحی می‌شود) به مهاجم اجازه می‌دهد تا حضور خود را در سرور تداوم بخشد. این نقص با تکنیک Server Software Component: Web Shell (T1505.003) مطابقت دارد. مهاجم می‌تواند از این Web Shell برای اجرای دستورات دلخواه، آپلود بک ‌دورهای بیشتر، یا ایجاد کاربران مخفی در وردپرس استفاده کند. نکته مهم اینکه بروزرسانی افزونه، فایل‌ های آلوده ‌ای که قبلاً آپلود شده ‌اند را حذف نمی‌کند و مدیران باید پوشه آپلود Elementor را به صورت دستی بررسی و پاکسازی کنند.

Impact (TA0040)

اجرای موفق کد روی سرور وردپرس می‌تواند محرمانگی، یکپارچگی و دسترس ‌پذیری وب ‌سایت را به خطر بیندازد. مهاجم ممکن است به داده ‌های قابل دسترس برای پردازه وب‌ سرور دسترسی پیدا کند، محتوای سایت را تغییر دهد، فایل ‌های مخرب اضافه کند یا سرویس را مختل سازد. در صورت دستیابی به دسترسی مدیریتی وردپرس یا سطح دسترسی بالاتر روی سرور، دامنه خسارت می‌تواند فراتر از خود وب‌ سایت گسترش یابد. گزارش‌ های امنیتی، بهره ‌برداری فعال از این نقص برای بارگذاری web shell و اجرای فرمان روی سرور را تأیید کرده‌اند.

منابع

  1. https://www.cve.org/CVERecord?id=CVE-2026-32475
  2. https://www.cvedetails.com/cve/CVE-2026-32475/
  3. https://patchstack.com/database/wordpress/plugin/elementor-pro/vulnerability/wordpress-elementor-pro-plugin-4-2-1-arbitrary-file-upload-vulnerability?_s_id=cve
  4. https://vulmon.com/vulnerabilitydetails?qid=CVE-2026-32475
  5. https://vuldb.com/vuln/393249
  6. https://patchstack.com/articles/critical-unauthenticated-file-upload-to-rce-in-elementor-pro-plugin?_s_id=cve
  7. https://www.wordfence.com/blog/2026/09/attackers-actively-exploiting-critical-vulnerability-in-elementor-pro-plugin/
  8. https://nvd.nist.gov/vuln/detail/cve-2026-32475
  9. https://cwe.mitre.org/data/definitions/434.html