یک آسیبپذیری بحرانی در افزونه GiveWP وردپرس، که در سرویسهای پرداختیار ایرانی نیز استفاده میشود، بهروزرسانی این افزونه را برای جلوگیری از بهرهبرداری مهاجمان، ضروری کردهاست.
زبان PHP جهت ذخیرهسازی دادههای پیچیده از serialization استفاده میکند. دادههای Serialized شده برای ذخیرهسازی در حجم بالا مناسب هستند و وردپرس از آن برای بسیاری از تنظیمات خود استفاده میکند. اما این میتواند یک مشکل امنیتی باشد، زیرا میتوان برای ذخیره object های PHP از آن استفاده کرد. اگر یک افزونه دادههای ارسال شده توسط کاربر را بدون تایید اعتبار unserialize کند، مهاجم میتواند اقدام به تزریق یک پیلود کند که موقع unserialize شدن تبدیل به یک PHP object شود. در حالی که یک PHP object ساده خطرناک نیست، اما موقعی که کلاس دارای magic method باشد این وضعیت متفاوت خواهد بود.
افزونه GiveWP دارای ویژگیهای متعددی از جمله فرمهای کمک مالی شخصیسازی شده و یکپارچهسازی با درگاهها و سرویسهای شخص ثالث و … است. با بررسی کد منبع این افزونه مشاهده میشود که تابع give_process_donation_form() برای رسیدگی و پردازش کمکهای مالی مورد استفاده قرار میگیرد. در داخل این تابع از توابع دیگری جهت تایید اعتبار دادهها استفاده میشود، اما متاسفانه در نسخه آسیبپذیر بر روی پارامتر POST به نام give_title تایید اعتبار کافی انجام نمیشود که این درنهایت باعث بهرهبرداری از آسیبپذیری خواهد شد و میتوان یک وبشل را بر روی سرور آپلود کرد.
نسخه 3.14.1 و تمام نسخههای پایینتر افزونه GiveWP تحت تاثیر این آسیبپذیری قرار دارند. این آسیبپذیری در نسخه 3.14.2 برطرف شده است و باید در اسرع وقت نسبت به نصب این نسخه یا نسخههای بالاتر اقدام شود.