وردپرس در تاریخ ۱۲ اکتبر ۲۰۲۳ (۲۰ مهر ۱۴۰۲)، نسخه 6.3.2 را منتشر کرد. این نسخه شامل مجموعهای از بهبودها و اصلاحات مهم امنیتی و فنی است که به مقابله با آسیبپذیریهای متداول کمک میکند. اگرچه شدت این آسیبپذیریها در سطح متوسط ارزیابی شده است، اما برخی از آنها به اندازهای جدی هستند که میتوانند منجر به از دست رفتن کنترل سایت شوند. به همین دلیل، آپدیت امنیتی وردپرس 6.3.2 یکی از مهمترین بهروزرسانیهای اخیر محسوب میشود. در این مقاله، به بررسی دقیقتر این نسخه و اصلاحات اعمال شده میپردازیم.
بررسی جزئیات آپدیت امنیتی وردپرس 6.3.2
بسیاری از این اصلاحیهها از نسخه 4.1 به بعد در تمامی نسخههای وردپرس اعمال شدهاند و تنها تعداد محدودی مختص نسخههای جدیدتر هستند. سیستم وردپرس از نسخه 3.7 به بعد از قابلیت بهروزرسانی خودکار هسته برای نسخههای امنیتی پشتیبانی میکند و انتظار میرود اکثر وبسایتهای وردپرسی ظرف ۲۴ ساعت پس از انتشار، بهطور خودکار به یکی از نسخههای اصلاح شده ارتقا پیدا کرده باشند. با این حال، اکیداً توصیه میشود که وضعیت بهروزرسانی سایت خود را بررسی کنید. نسخههای پچ شده برای تمام نسخههای اصلی وردپرس از 4.1 به بالا در دسترس قرار گرفتهاند، بنابراین میتوانید بدون نگرانی از مشکلات سازگاری، سایت خود را بهروز نگه دارید.
کارشناسان حوزه امنیت وردپرس، بلافاصله پس از انتشار این نسخه، قوانین جدیدی را برای فایروالهای امنیتی خود ارائه کردند تا از کاربران در برابر تاثیرگذارترین آسیبپذیریهای برطرف شده محافظت نمایند. این قوانین معمولاً پس از مدتی برای عموم کاربران نیز در دسترس قرار میگیرند. اگر سایت شما بهطور خودکار بهروزرسانی نشده است، توصیه جدی میکنیم که هرچه سریعتر اقدام به بهروزرسانی دستی کنید. دلیل این تأکید، وجود یک آسیبپذیری مهم در نسخه 6.3.1 و نسخههای قبلتر آن است که به مهاجمی با دسترسی پایین (مانند نقش مشارکتکننده) اجازه میداد کنترل سایت را به دست گیرد.
تجزیه و تحلیل فنی و بررسی اجمالی
مانند هر نسخه اصلی وردپرس که شامل اصلاحات امنیتی است، تیمهای متخصص تحلیل تهدیدات، تغییرات کدها را با جزئیات بررسی کردهاند تا میزان تأثیر این آسیبپذیریها را بر وبسایتها ارزیابی کرده و اطمینان حاصل کنند که سایتها بهخوبی محافظت میشوند.
نقص امنیتی در اجرای شورت کدها
توضیحات: هسته وردپرس <= 6.3.1 – امکان اجرای شورت کد دلخواه توسط کاربران احراز هویت شده (مشترک به بالا)
نسخههای تحت تأثیر: هسته وردپرس < 6.3.2
نسخه کاملاً پچ شده: 6.3.2
به دلیل عدم اعتبارسنجی کافی ورودیها در تابع parse_media_shortcode AJAX، نسخههای وردپرس تا 6.3.1 در برابر اجرای شورت کدهای دلخواه آسیبپذیر بودند. این ضعف به مهاجمانی که دارای حساب کاربری در سایت بودند (حتی با سطح دسترسی پایین مانند مشترک)، اجازه میداد تا شورت کدهای مورد نظر خود را اجرا کنند. هرچند این پچ مستقیماً یک آسیبپذیری خاص را هدف قرار نمیدهد، اما یک راه متداول را مسدود میکند که مهاجمان از طریق آن میتوانستند از آسیبپذیریهایی که بر اساس شورت کدها عمل میکنند، سوء استفاده کنند. پیش از وردپرس 6.3.2، هر کاربر وارد شده به سیستم میتوانست با فراخوانی کنترلر داخلی AJAX «parse-media-shortcode»، هر شورت کدی را اجرا کند.
آپدیت امنیتی وردپرس 6.3.2 این کنترلر AJAX را به شورت کدهای مربوط به رسانه محدود میکند و اجرای آن را منوط به وجود کد کوتاه «embed» با شناسه پستی فعال میکند که کاربر به آن دسترسی دارد. این تغییر به این معنی است که طیف وسیعی از آسیبپذیریهای مربوط به پایگاه داده، افشای اطلاعات حساس و اجرای کد از راه دور که قبلاً فقط نیاز به ورود کاربر فعال داشتند، اکنون تنها توسط کاربران با سطح دسترسی مشارکتکننده یا بالاتر قابل سوء استفاده هستند.
آسیبپذیری اسکریپت بینسایتی از طریق رمزهای عبور برنامه
توضیحات: وردپرس Core 5.6-6.3.1 – بازتاب اسکریپت بینسایتی از طریق درخواستهای گذرواژه برنامهها
نسخههای تحت تأثیر: هسته وردپرس < 6.3.2
نسخه کاملاً پچ شده: 6.3.2
نسخههای وردپرس بین 5.6 و 6.3.1 هنگام درخواست رمز عبور برنامه، به دلیل عدم پاکسازی کافی ورودی و خروجی از URIهای شبه پروتکل، در برابر اسکریپتهای متقابل منعکس شده از طریق پارامترهای “success_url” و “reject_url” آسیبپذیر بودند. این نقص به مهاجمان اجازه میداد تا با فریب کاربر برای کلیک روی یک لینک خاص و پذیرش یا رد رمز عبور برنامه، کدهای جاوا اسکریپت دلخواه را در صفحاتی که مشاهده میکند، تزریق کنند. وردپرس به برنامهها اجازه میدهد تا برای احراز هویت، درخواست رمز عبور برنامه را بدهند.
پیش از نسخه 6.3.2، وردپرس مسیرهای تغییر مسیر (redirect URIs) مورد استفاده هنگام تأیید یا رد رمز عبور را بهدرستی اعتبارسنجی نمیکرد. این بدان معنا بود که یک مهاجم میتوانست آدرسی برای درخواست رمز عبور برنامه بسازد که حاوی دادههای جاوا اسکریپت برای تغییر مسیر باشد. اگر قربانی از این URL بازدید میکرد و درخواست رمز عبور را تأیید یا رد میکرد، ممکن بود به آدرسی هدایت شود که کد جاوا اسکریپت مخرب در مرورگر او اجرا میشد. وردپرس 6.3.2 با ارائه یک پچ، این مشکل را برطرف کرده است.
مانند سایر آسیبپذیریهای Cross-Site Scripting (XSS)، این نقص نیز میتوانست برای به دست گرفتن کنترل سایت از طریق دسترسی به بخش مدیریت و بکاند مورد سوء استفاده قرار گیرد.
افشای اطلاعات دیدگاهها در پستهای محافظت شده
توضیحات: هسته وردپرس <= 6.3.1 – افشای اطلاعات حساس تأیید شده (مشارکت کننده +) از طریق دیدگاهها در پستهای محافظت شده با رمز عبور یا خصوصی
نسخههای تحت تأثیر: هسته وردپرس < 6.3.2
نسخه کاملاً پچ شده: 6.3.2
نسخههای وردپرس تا 6.3.1 به دلیل امکان دسترسی به لیست دیدگاهها، در معرض افشای اطلاعات حساس بودند. این ضعف به کاربران احراز هویت شده با سطح دسترسی مشارکتکننده یا بالاتر اجازه میداد تا نظرات مربوط به پستهایی که توسط رمز عبور محافظت شده یا خصوصی بودند را مشاهده کنند، حتی اگر دسترسی مستقیم به محتوای آن پستها نداشتند. اگرچه در بیشتر موارد این یک مشکل با تأثیر کم محسوب میشود، اما آپدیت امنیتی وردپرس 6.3.2 این موضوع را اصلاح کرده و از حریم خصوصی دیدگاههای مربوط به پستهای محافظت شده یا خصوصی محافظت مینماید.
افزایش مقاومت در برابر آسیبپذیریهای Object Injection
اگرچه هسته وردپرس برای مدتی طولانی فاقد آسیبپذیری شناخته شده Object Injection بوده است، اما این نوع آسیبپذیریها به طور منظم در افزونهها و قالبهای مختلف کشف میشوند. موفقیت در بهرهبرداری از آسیبپذیریهای Object Injection به وجود زنجیرههای خاصی به نام POP (Property Oriented Programming) نیاز دارد. پیش از وردپرس 6.3.2، زنجیرههای POP بالقوهای در برخی کلاسهای داخلی وردپرس وجود داشتند. با وجود اینکه امکان ایجاد اکسپلویت عملیاتی برای آنها در زمان بررسی فراهم نشد، اما وصلههای ارائه شده نشان میدهند که این تغییرات برای جلوگیری از سریالیسازی ناخواسته اشیاء طراحی شدهاند که میتواند منجر به اجرای کد از راه دور شود. حذف این زنجیرهها گام مهمی در افزایش امنیت کلی پلتفرم وردپرس در برابر آسیبپذیریهای افزونهها و قالبهای شخص ثالث محسوب میشود.
محدود کردن جستجوی کاربران از طریق ایمیل
توضیحات: WordPress Core 4.7.0-6.3.1 – افشای اطلاعات حساس از طریق نقطه پایانی جستجوی کاربر REST API
نسخههای تحت تأثیر: هسته وردپرس < 6.3.2
نسخه کاملاً پچ شده: 6.3.2
هسته وردپرس در نسخههای 4.7.0 تا 6.3.1 از طریق نقطه پایانی REST API مربوط به جستجوی کاربران، در معرض افشای اطلاعات حساس قرار داشت. با وجود اینکه نتایج جستجو، نشانیهای ایمیل کاربران را مستقیماً نمایش نمیداد، مگر اینکه کاربر جستجوکننده دسترسی لازم برای «list_users» را داشته باشد، اما خود فرآیند جستجو بر روی ستون user_email در پایگاه داده اعمال میشد. این مسئله به افراد احراز هویت نشده امکان میداد تا با حدس زدن بخشی از آدرس ایمیل و استفاده از پستها یا صفحات منتشر شده سایت، وجود یا عدم وجود یک آدرس ایمیل خاص را تأیید کنند که به طور بالقوه حریم خصوصی کاربران را تحت تأثیر قرار میداد.
پیش از نسخه 6.3.2، حتی اگر وردپرس آدرسهای ایمیل را مستقیماً به کاربران بدون دسترسی “list_users” نشان نمیداد، همچنان ستون ایمیل کاربر را در جدول wp_users جستجو میکرد. این باعث میشد بتوان با وارد کردن بخشی از آدرس ایمیل در پارامتر جستجو، وجود آن ایمیل را تأیید کرد. در آپدیت امنیتی وردپرس 6.3.2، برای رفع این مشکل، ستونهای جستجو برای کاربرانی که دسترسی “list_users” ندارند، تنها به ستونهایی که قابل نمایش هستند محدود شده است.
نقص انکار سرویس از طریق حافظه نهان (Cache Poisoning)
توضیحات: هسته وردپرس 4.7.0-6.3.1 – انکار سرویس از طریق نادیده گرفتن حافظه نهان (Cache Poisoning)
نسخههای تحت تأثیر: هسته وردپرس < 6.3.2
نسخه کاملاً پچ شده: 6.3.2
هسته وردپرس در نسخههای بین 4.7.0 و 6.3.1 در برابر آسیبپذیری Denial of Service (DoS) یا انکار سرویس از طریق مسمومیت حافظه نهان (Cache Poisoning) آسیبپذیر بود. در سناریوهایی که هدر X-HTTP-Method-Override در یک درخواست به یک نقطه پایانی REST API ارسال میشد و آن نقطه پایانی یک خطای 4xx برمیگرداند، این خطا میتوانست در حافظه نهان ذخیره شود و در نتیجه منجر به نادیده گرفتن سرویس برای کاربران دیگر شود. پاسخها به درخواستهای REST API برای کاربرانی که وارد سیستم شدهاند ذخیره نمیشوند.
با این حال، در پیکربندیهای خاص کشینگ، یک مهاجم بدون نیاز به احراز هویت میتوانست با ارسال درخواست به API REST و استفاده از هدر X-HTTP-Method-Override برای یک نقطه پایانی عمومی، یک خطای 4xx دریافت کند. این خطا میتوانست به دلیل محدودیت دسترسی به آن روش یا عدم پشتیبانی از آن رخ دهد. در مواردی که این خطا در حافظه نهان ذخیره میشد، هر بازدیدکننده دیگری که وارد نشده بود و سعی در بازیابی داده از آن نقطه پایانی داشت، خطای کش شده 4xx را دریافت میکرد. وردپرس 6.3.2 شامل پچی برای جلوگیری از این اتفاق است.
اسکریپت بینسایتی ذخیره شده برای کاربران مشارکتکننده در بلوک فوتر
توضیحات: وردپرس 6.3-6.3.1 – اسکریپتهای بینسایتی ذخیره شده قابل اجرا توسط کاربران احراز هویت شده (مشارکت کننده +) از طریق بلوک فوتر
نسخههای تحت تأثیر: وردپرس < 6.3.2
نسخه کاملاً پچ شده: 6.3.2
نسخههای وردپرس بین 6.3 و 6.3.1 به دلیل پاکسازی ناکافی ورودیها و خروجیها در بلوک فوتر، در برابر اسکریپتهای بینسایتی ذخیره شده آسیبپذیر بودند. این نقص به مهاجمانی با حساب کاربری و سطح دسترسی مشارکتکننده یا بالاتر، اجازه میداد تا کدهای جاوا اسکریپت دلخواه را در صفحاتی که حاوی بلوک فوتر هستند، تزریق کنند که هر زمان کاربری آن صفحه را مشاهده میکرد، اجرا میشد. وردپرس پیش از نسخه 6.3.2، محتوای وارد شده در بلوکهای فوتر را بهاندازه کافی پاکسازی نمیکرد. حتی با وجود حذف بخشی از ورودیها در سمت کاربر (client-side)، امکان رهگیری درخواست و افزودن تگهای اسکریپت مخرب به فوتر وجود داشت. وردپرس این مشکل امنیتی را در نسخه 6.3.2 برطرف کرده است.
همانند سایر آسیبپذیریهای Cross-Site Scripting، این نقص نیز میتوانست توسط مهاجمان برای کنترل سایت از طریق دسترسی به بخش مدیریت و بکاند استفاده شود.
اسکریپت بینسایتی ذخیره شده برای کاربران مشارکتکننده در پیوندهای ناوبری
توضیحات: وردپرس 5.9-6.3.1 – اسکریپت بینسایتی ذخیره شده قابل اجرا توسط کاربران احراز هویت شده (مشارکت کننده +) از طریق ویژگیهای بلوک ناوبری
نسخههای تحت تأثیر: WordPress Core 5.9-6.3.1
نسخه کاملاً پچ شده: 6.3.2
نسخههای وردپرس بین 5.9 و 6.3.1 به دلیل پاکسازی ناکافی ورودی و خروجی در ویژگیهای بلوک ناوبری، در برابر اسکریپتهای بینسایتی ذخیره شده آسیبپذیر بودند. این نقص به مهاجمانی با حساب کاربری و سطح دسترسی مشارکتکننده یا بالاتر اجازه میداد تا کدهای جاوا اسکریپت دلخواه را در صفحاتی که شامل بلوک ناوبری هستند، تزریق کنند که هر زمان کاربری آن صفحه را مشاهده میکرد، اجرا میشد. ویرایشگر بلوک وردپرس شامل بلوک ناوبری برای نمایش پیوندهای پستهای قبلی و بعدی است.
پیش از نسخه 6.3.2، وردپرس نتوانست به اندازه کافی ویژگیهای استفاده شده در این بلوک را اعتبارسنجی و پاکسازی کند. در نتیجه، هر کاربری که به ویرایشگر پست دسترسی داشت، میتوانست اسکریپت مخرب را در عنصر ناوبری وارد کرده و باعث اجرای آن هنگام بازدید بازدیدکنندگان از صفحه مورد نظر شود. همانند سایر آسیبپذیریهای Cross-Site Scripting، میتوان از این نقص برای به دست گرفتن کنترل سایت از بخش مدیریت استفاده کرد که میتواند بسیار خطرناک باشد.
جمع بندی نهایی
آپدیت امنیتی وردپرس 6.3.2 شامل اصلاحاتی برای ۵ آسیبپذیری با شدت متوسط است، همچنین مقاومت کلی پلتفرم را در برابر آسیبپذیریهای Object Injection که اغلب در افزونهها و قالبهای جانبی یافت میشوند، افزایش میدهد. با توجه به اینکه برخی از این آسیبپذیریها میتوانستند بدون نیاز به اقدامات پیچیده مورد سوء استفاده قرار گیرند، توصیه میشود اگر سایت شما بهطور خودکار به این نسخه بهروزرسانی نشده است، فوراً اقدام به بهروزرسانی دستی نمایید تا از مشکلات امنیتی ذکر شده در این مقاله در امان بمانید. بهروزرسانی منظم، اولین و مهمترین گام در حفظ امنیت سایت وردپرسی شماست.
ارسال پاسخ