آسیب پذیری بحرانی در افزونه Plugin Ad Inserter پچ شد.
توضیحات مشکل امنیتی: اجرای کد از راه دور تاییدشده (Authenticated Remote Code Execution
افزونه: Ad Inserter
نسخه: 2.4.21 و قبل از آن
امتیاز CVSS: بحرانی (9.9)
CVSS بردار : CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
در روز جمعه، 12 ژوئیه یا 21 تیر 98، تیم اطلاعات جاسوسی تیم وردفنس یک آسیب پذیری را در افزونه Ad Inserter کشف کرد، یک افزونه وردپرس که در بیش از 200،000 وب سایت نصب شده است. این ضعف، کاربران مجاز (کاربر مشترک و بالاتر) را برای اجرای کد دلخواه PHP روی سایت ها با استفاده از افزونه امکان پذیر ساخت. تیم وردفنس، این موضوع را به طور خصوصی به توسعه دهنده پلاگین گفنه است و تیم توسعه دهنیده افزونه ، شنبه پچ امنیتی را منتشر کرده است.
این مسئله امنیتی بحرانی محسوب می شود و وبسایت هایی که در حال استفاده از Ad Inserter 2.4.21 یا نسخه قدیمی تر هستن، باید به نسخه 2.4.22 به روز رسانی شوند. وردفنس همان روزی که آسیب پذیری را کشف کرد، برای مشتریان Wordfence Premium یک قانون (rule) دیوار آتش جدید (firewall) برای محافظت در برابر سوء استفاده ها دریافت کردند؛ البته کاربران رایگان این قانون را پس از سی روز دریافت خواهند کرد.
پیش نمایش آگهی
Ad Inserter یک افزونه مدیریت آگهی است که از همه انواع آگهی پشتیبانی می کند و شامل گزینه های پیشرفته برای قرار دادن فرم های انتخاب، اسکریپت های هدر، جاوا اسکریپت، CSS، HTML، PHP، تجزیه و تحلیل، ردیابی و یا آگهی در هر جای صفحه است. این افزونه دارای ویژگی پیش نمایش تبلیغاتی است که مدیران می توانند برای تأیید صحت جانمایی بلوک های تبلیغاتی قبل از انتشار آگهی ها از پیش نمایش استفاده کنند.
این افزونه برای پیش نمایش از اکشن آژاکس (ai_ajax_backend) استفاده می کند.
if (is_admin () === true) {
add_action ('wp_ajax_ai_ajax_backend', 'ai_ajax_backend');
add_action ('wp_ajax_ai_ajax', 'ai_ajax');
add_action ('wp_ajax_nopriv_ai_ajax', 'ai_ajax');}
به این علت که از این اکشن بدون استفاده از پیشوند(wp_ajax_nopriv) استفاده شده است، تمام کاربران واردشده به سایت (از کاربران مشترک به بالا) امکان دسترسی به آن را دارند. در کد زیر می توانید مشاهده کنید که با استفاده از (check_admin_referer) یک کنترل امنیتی انجام شده است.
function ai_ajax_backend () {
global $preview_name, $preview_alignment, $preview_css;
// check_ajax_referer ("adinserter_data", "ai_check");
check_admin_referer ("adinserter_data", "ai_check");
if (isset ($_POST ["preview"])) {
$block = urldecode ($_POST ["preview"]);
if (is_numeric ($block) && $block >= 1 && $block <= 96) {
require_once AD_INSERTER_PLUGIN_DIR.'includes/preview.php';
این تابع برای محافظت در برابر حملات CSRF از nonce (یک نشانه یک بار مصرف برای جلوگیری از درخواست های تکراری، منقضی، یا مخرب ناخواسته پردازش نشده) در درخواست استفاده کرده است. اغلب توسعه دهندگان فکر می کنند همین امر برای امنیت کافی است. البته در عمل استفاده از nonce بافرض این قضیه درست است که فقط توسط کاربران با مجوز های خاص در دسترس باشد. در مستندات وردپرس روشن است که check_admin_referer برای کنترل دسترسی در نظر گرفته نشده است، و این آسیب پذیری، نمونه خوبی برای این است که چرا استفاده بد از nonce ها برای تایید هوست ها یک ایده بد است.
Nonces می تواند به خطر بیافتد
یکی دیگر از ویژگی های مفید Ad Inserter حالت اشکال زدایی برای عیب یابی مسائل مربوط به تبلیغات است. به طور معمول، این ویژگی اشکال زدایی فقط برای مدیران در دسترس است، و هنگامی که گزینه های خاص فعال باشند، یک بلوک از جاوا اسکریپت در هر صفحه گنجانده می شود. این جاوااسکریپت شامل nonce معتبر برای عمل ai_ajax_backend است.
متاسفانه ویژگی اشکال زدایی توسط هر کاربری که این کوکی خاص را دارد؛ قابل اجرا است:
Cookie: AI_WP_DEBUGGING=2
واضح است که nonce ها جایگزین مناسبی برای کنترل دسترسی مناسب با استفاده از current_user_can نیستند.
Payload های مخرب پیش نمایش
یک مهاجم میتواند با داشتن یک nonce ،با ارسال یک پرونده مخرب حاوی کد دلخواه PHP مانند کد زیر از ویژگی پیش نمایش آگهی سوء استفاده کند:
با ارسال یک پرونده مخرب حاوی کد دلخواه PHP مانند کد زیر
<? php echo file_get_contents ('/ etc / passwd'); ?>
تاریخجه افشاء
12 ژوئیه (21 تیر) – آسیب پذیری توسط تیم اطلاعاتی تهدیدهای Wordfence کشف شد.
12 ژوئیه (21 تیر) – قانون فایروال به کاربران Wordfence Premium ارسال شد.
12 ژوئیه (21 تیر) – توسعه دهنده افزونه از مسئله امنیت مطلع شد.
13 ژوئیه (22 تیر) – پچ منتشر شد.
11 اوت (20 مرداد) – قانون فایروال برای کاربران رایگان در دسترس می باشد.
نتیجه
در این خبر از وردفنس، یک نقص اجرای کد تصدیق شده موجود در پلاگین Ad Inserter توسط وردفنس بررسی شد. این نقص در نسخه 2.4.22 پچ شده است و تیم وردفنس توصیه می کند کاربران این افزونه را به آخرین نسخه موجود به روز رسانی کنند. سایتهایی که از Wordfence Premium استفاده می کنند از 12 ژوئیه (21 تیر) در برابر حملات علیه این آسیب پذیری محافظت شده اند. سایت هایی که از نسخه رایگان Wordfence استفاده می کنند، به روز رسانی این قانون فایروال را در 11 آگوست (20 مرداد) دریافت خواهند کرد.
با تشکر از توسعه دهنده افزونه، ایگور فونا، برای پاسخ بسیار سریع خود را در یک شنبه، و جیمز Yokobosky از تیم Wordfence Threat Intelligence برای کمک به تحقیق در مورد این آسیب پذیری.
منبع : Wordfence
ترجمه و تالیف : سایت ikarsoo.com
خدمات کانفیگ امنیتی وردپرس و ویروس کشی سایت
درباره اسماعیل منصوری
از سال ۱۳۸۹ با طراحی سایت با زبانهای برنامه نویسی شروع کردم. خیلی زمانبر و دردسر داشت. اما الان طراحی سایت بدون کدنویسی را در زمانی کمتر و براحتی انجام میدم. دانلود رایگان ۲ فصل اول کتاب راز طراحی سایت بدون کدنویسی
نوشتههای بیشتر از اسماعیل منصوری
دیدگاهتان را بنویسید