فهرست مطالب
مقدمه
آسیب پذیری PHP Object Injection در افزونه Quiz and Survey Master، که بیش از ۴۰ هزار نصب فعال دارد، شناسایی و وصله شده است. این آسیب پذیری به مهاجمان اجازه می دهد تا اشیاء PHP مخرب را تزریق کرده و از راه دور کد دلخواه را روی وب سایت های آسیب پذیر اجرا کنند. در این مقاله، به بررسی جزئیات این آسیب پذیری، طرز کار آن ، و راهکارهای مقابله با آن می پردازیم.
افزونه Quiz and Survey Master یکی از محبوب ترین افزونه های وردپرس برای ایجاد آزمون ها و نظرسنجی های آنلاین است. به دلیل گستردگی استفاده از این افزونه ، وصله این آسیب پذیری از اهمیت بالایی برخوردار است.
- اگر از افزونه Quiz and Survey Master استفاده می کنید ، حتماً آن را به آخرین نسخه (۱۰.۲.۶) به روزرسانی کنید.
- از یک فایروال وب اپلیکیشن (WAF) برای محافظت از وب سایت خود در برابر حملات تزریق کد استفاده کنید.
- به طور منظم وب سایت خود را برای شناسایی آسیب پذیری های امنیتی اسکن کنید.

PHP Object Injection چیست؟
PHP Object Injection یک آسیب پذیری امنیتی است که به مهاجمان اجازه می دهد تا اشیاء PHP مخرب را به یک برنامه تزریق کنند. هنگامی که برنامه این اشیاء را از حالت سریال خارج می کند (unserialize)، کد مخرب موجود در آن ها اجرا می شود. این می تواند منجر به اجرای کد از راه دور، دسترسی غیرمجاز به داده ها ، یا سایر حملات شود.
این نوع آسیب پذیری معمولاً در برنامه هایی رخ می دهد که داده های ورودی کاربر را بدون اعتبارسنجی مناسب ، از حالت سریال خارج می کنند. مهاجم می تواند با دستکاری داده های ورودی، اشیاء مخرب را به برنامه تزریق کند.
- همواره داده های ورودی کاربر را قبل از پردازش، اعتبارسنجی کنید.
- از توابع امن برای سریال سازی و از حالت سریال خارج کردن داده ها استفاده کنید.
- از یک فایروال وب اپلیکیشن (WAF) برای شناسایی و مسدود کردن حملات تزریق کد استفاده کنید.
طرز کار آسیب پذیری در Quiz and Survey Master
آسیب پذیری PHP Object Injection در افزونه Quiz and Survey Master در تابع qsm_questions_answers_shortcode_to_text هست. این تابع داده های ورودی کاربر را از طریق متغیر $_POST['quiz_answer_random_ids'] دریافت می کند و آن را به تابع qmn_sanitize_random_ids_data ارسال می کند.
تابع qmn_sanitize_random_ids_data بررسی می کند که آیا داده های ورودی سریال شده اند یا نه. اگر داده ها سریال شده باشند، تابع maybe_unserialize برای از حالت سریال خارج کردن آن ها استفاده می شود. این فرآیند بدون بررسی کلاس های مجاز ، امکان تزریق اشیاء PHP مخرب را فراهم می کند.
این آسیب پذیری از طریق هوک wp_ajax_nopriv_qmn_process_quiz قابل بهره برداری است که امکان پردازش پاسخ های آزمون را فراهم می کند.
- از بررسی و اعتبارسنجی دقیق داده های ورودی کاربر اطمینان حاصل کنید.
- از توابع امن برای سریال سازی و از حالت سریال خارج کردن داده ها استفاده کنید.
- محدودیت هایی را برای کلاس های مجاز در هنگام از حالت سریال خارج کردن داده ها اعمال کنید.
وصله امنیتی
توسعه دهندگان افزونه Quiz and Survey Master در نسخه ۱۰.۲.۶ این آسیب پذیری را وصله کرده اند. آن ها تابع جدیدی به نام qsm_safe_unserialize ساخته اند که از تابع unserialize با آرگومان ['allowed_classes' => false] استفاده می کند. این آرگومان از فراخوانی اشیاء دلخواه جلوگیری می کند و امنیت را بهبود می بخشد.
با به روزرسانی افزونه به نسخه ۱۰.۲.۶ ، وب سایت شما در برابر این آسیب پذیری محافظت می شود.
- همواره از آخرین نسخه افزونه ها و قالب های وردپرس استفاده کنید.
- به روزرسانی های امنیتی را در اسرع وقت اعمال کنید.
- از یک سیستم مدیریت آسیب پذیری برای نظارت بر آسیب پذیری های امنیتی در وب سایت خود استفاده کنید.
توصیه های امنیتی
برای جلوگیری از آسیب پذیری های مشابه در آینده، رعایت نکات زیر لازمه:
- از تابع
unserializeفقط در صورت لزوم استفاده کنید. - در صورت استفاده از
unserialize، همواره از آرگومان['allowed_classes' => false]استفاده کنید. - از توابع جایگزین مانند
json_decodeبرای پردازش داده ها استفاده کنید. - داده های ورودی کاربر را قبل از پردازش، به طور کامل اعتبارسنجی کنید.
با رعایت این نکات ، می توانید امنیت وب سایت خود را به میزان زیادی بیشتر کنید و از حملات مخرب جلوگیری کنید.
تجربه کاربران و نمونه های واقعی
خیلی از کاربران افزونه Quiz and Survey Master بعد از اطلاع از این آسیب پذیری، افزونه خود را به آخرین نسخه به روزرسانی کرده اند. بعضی از کاربران نیز از فایروال های وب اپلیکیشن (WAF) برای محافظت از وب سایت خود استفاده کرده اند.
متاسفانه ، بعضی از وب سایت ها قبل از انتشار وصله امنیتی مورد حمله قرار گرفته اند. این نشان می دهد که به روزرسانی های امنیتی باید در اسرع وقت اعمال شوند.
- به روزرسانی های امنیتی را جدی بگیرید و در اسرع وقت اعمال کنید.
- از یک سیستم پشتیبان گیری منظم برای محافظت از داده های خود استفاده کنید.
- در صورت مشاهده هرگونه فعالیت مشکوک، فوراً اقدام کنید.
چالش ها و الزامات اجرایی
یکی از چالش های اصلی در عوضه با آسیب پذیری های امنیتی ، آگاهی رسانی به کاربران است. خیلی از کاربران از اهمیت به روزرسانی های امنیتی آگاه نیستند و وب سایت خود را در معرض خطر قرار می دهند.
همچنین، اجرای بعضی از راهکارهای امنیتی مانند استفاده از فایروال وب اپلیکیشن (WAF) نیازمند دانش فنی و تخصص است.
- آگاهی کاربران را در مورد اهمیت امنیت وب سایت بیشتر کنید.
- ابزارهای امنیتی را در دسترس و آسان برای استفاده قرار دهید.
- از متخصصان امنیتی برای کمک به پیاده سازی راهکارهای امنیتی استفاده کنید.
نتیجه گیری
آسیب پذیری PHP Object Injection در افزونه Quiz and Survey Master یک تهدید جدی برای وب سایت های آسیب پذیر بود. با انتشار وصله امنیتی، این آسیب پذیری برطرف شده است. با این حال، رعایت نکات امنیتی و به روزرسانی منظم افزونه ها و قالب ها همچنان ضروری است.
برای اطلاعات بیشتر در مورد یافتن و رفع آسیب پذیری ها، می توانید به آکادمی Patchstack بروید.
Timeline
۳۱ جولای ۲۰۲۵: دریافت گزارش آسیب پذیری و اطلاع رسانی به فروشنده.
۱۵ آگوست ۲۰۲۵: انتشار نسخه وصله شده توسط فروشنده در مخزن WP.
۰۳ سپتامبر ۲۰۲۵: انتشار ورودی آسیب پذیری در پایگاه داده.
۰۹ اکتبر ۲۰۲۵: انتشار عمومی مقاله مشاوره امنیتی.
شما می توانید به ما کمک کنید تا اینترنت را به مکانی امن تر تبدیل کنیم. اگر توسعه دهنده افزونه هستید، فرآیند افشای خود را ساده کنید تا آسیب پذیری ها را سریع تر برطرف کنید و با CRA مطابقت داشته باشید. اگر شرکت میزبانی هستید، از کاربران خود نیز محافظت کنید! سلامت سرور را بهبود بخشید و با امنیت فعال، درآمد بیشتری کسب کنید. اگر محقق امنیتی هستید ، آسیب پذیری ها را به برنامه پاداش باگ ما گزارش دهید تا جوایز نقدی ماهانه کسب کنید.