وردپرس 6.3.2 در ۱۲ اکتبر ۲۰۲۳ منتشر شد. این نسخه شامل شماری از اصلاحات امنیتی و سختافزاری در برابر آسیبپذیریهایی است که معمولاً مورد سوء استفاده قرار میگیرند. در حالی که همه آسیبپذیریها به میزان متوسطی هستند، چندین مورد از آنها به اندازهای تأثیرگذارند که به طور بالقوه امکان تصاحب سایت را فراهم میکنند بنابراین آپدیت امنیتی در وردپرس 6.3.2 دارای مهمترین اصلاحات است که در این مدت دیدهایم. با هم به بررسی آن در این پست میپردازیم.
بسیاری از این پچها از نسخه 4.1 به همه نسخههای وردپرس انتقال یافتهاند، و تنها تعدادی از آنها به نسخه اصلی که این عملکرد در آن منتشر شده، منتقل شدهاند. از زمان وردپرس 3.7 از بهروزرسانیهای خودکار هسته برای نسخههای امنیتی پشتیبانی میکند و اکثریت قریب به اتفاق سایتهای وردپرس باید طی 24 ساعت آینده یک پچ برای نسخه اصلی وردپرس خود دریافت کنند. توصیه میکنیم بررسی شود که سایت شما به طور خودکار به یکی از نسخههای پچ شده به روز شود. نسخههای پچ شده برای همه نسخههای اصلی وردپرس از نسخه 4.1 به بعد در دسترس هستند، بنابراین میتوانید بدون خطر سازگاری، بروزرسانی را انجام دهید.
تیم هوشمند امنیت وردپرس Wordfence Threat دو قانون جدید فایروال را برای محافظت از مشتریان Wordfence Premium، Wordfence Care و Wordfence Response در برابر تاثیرگذارترین آسیب پذیریهای اصلاح شده منتشر کرد و این قوانین تا 30 روز دیگر در 11 نوامبر 2023 در دسترس کاربران Wordfence بصورت رایگان قرار خواهد گرفت. اگر سایت شما بهطور خودکار بهروزرسانی نشده، اکیداً توصیه میکنیم در اسرع وقت بهصورت دستی بهروزرسانی آن را انجام دهید، زیرا یکی از آسیبپذیریهای اصلاحشده در آپدیت امنیتی در وردپرس 6.3.2 توسط مهاجمی با حساب کاربری در سطح مشارکتکننده با امتیاز پایین برای تصاحب سایت وجود دارد.
مانند هر نسخه اصلی وردپرس که حاوی اصلاحات امنیتی است، تیم Wordfence Threat Intelligence تغییرات کدها را با جزئیات تجزیه و تحلیل کرده تا تأثیر این آسیبپذیریها را بر مشتریان خود ارزیابی کند و اطمینان حاصل کند که سایت افراد محافظت میشود.
هسته وردپرس به دلیل عدم تأیید اعتبار ورودی در پارامتر “شورتکد” در تابع parse_media_shortcode AJAX، در برابر اجرای شورت کد دلخواه تا نسخه 6.3.1 آسیبپذیر است. این امر اجازه میدهد تا مهاجمان احراز هویت شده، با امتیازات سطح مشترک و بالاتر، شورت کدهای دلخواه را اجرا کنند. در حالی که این پچ، آسیبپذیری خاصی را برطرف نمیکند، اما یک بردار مشترک را مسدود کرده که مهاجمان را قادر میسازد از آسیبپذیریهایی که از شورتکدها بهره میبرند، سوء استفاده کنند. قبل از وردپرس 6.3.2، هر کاربر احراز هویت شده، از جمله مشترکین، میتوانست هر شورتکدی را با فراخوانی کنترلر داخلی AJAX «parse-media-shortcode» اجرا کند.
آپدیت امنیتی در وردپرس 6.3.2 کنترل کننده AJAX را به شورت کدهای رسانه محدود میکند و نیاز به کد کوتاه «embed» با شناسه پست فعالی دارد که کاربر میتواند به آن دسترسی داشته باشد. این بدان معناست که طیف وسیعی از آسیبپذیریهای SQL، افشای اطلاعات حساس، و اجرای کد از راه دور که فقط به ورود کاربر فعال نیاز دارند، اکنون فقط توسط کاربران سطح مشارکتکننده یا بالاتر امکان سوءاستفاده دارند. با جستجو در پایگاه داده Wordfence Intelligence، میتوانید چندین مشکل امنیتی مبتنی بر شورت کد را پیدا کنید.
قبلاً نمیتوانستیم قانون فایروال را برای جلوگیری از اجرای شورت کدهای دلخواه به دلیل موارد استفاده متفاوت اضافه کنیم. خوشبختانه، با این پچ و تغییر آن، رفتار مورد انتظار در سطج مشارکت کننده محدود شده است، بنابراین یک قانون فایروال عمومی ایجاد شده که از اجرای خودسرانه کدهای کوتاه که در لیست مجاز نیستند جلوگیری میکند.
هسته وردپرس در هنگام درخواست رمز عبور در نسخههای بین 5.6 و 6.3.1 به دلیل پاکسازی ناکافی ورودی و فرار خروجی از URIهای شبه پروتکل، در برابر اسکریپتهای متقابل منعکس شده از طریق پارامترهای “success_url” و “reject_url” آسیبپذیر است. این امکان را برای مهاجمان احراز هویت نشده فراهم میکند تا اسکریپتهای وب دلخواه را در صفحاتی که اجرا میشوند تزریق کنند، در صورتی که بتوانند با موفقیت کاربر را فریب داده تا عملی مانند کلیک کردن روی پیوند و پذیرش یا رد رمز عبور برنامه را انجام دهد.
وردپرس به برنامهها اجازه میدهد تا پسورد آنها را درخواست کرده تا برای آنها تولید شود. وردپرس قبل از نسخه 6.3.2 نمیتواند URIهای تغییر مسیر مورد استفاده در هنگام تایید یا رد شدن رمز عبور را تأیید کند، به این معنی که یک مهاجم میتواند یک URL برای درخواست رمز عبور برنامه ایجاد کرده که حاوی دادههای جاوا اسکریپت برای تغییر مسیر است. اگر قربانی از این URL در سایت خود بازدید کند و درخواست رمز عبور برنامه را تأیید یا رد کند، میتواند به یک URI هدایت شده که جاوا اسکریپت را در مرورگر او اجرا میکند. وردپرس 6.3.2 حاوی یک پچ برای حل این مشکل است.
مانند تمام آسیبپذیریهای Cross-Site Scripting، میتوان از این آسیبپذیری برای کنترل یک سایت در بخش ادمین و بکاند استفاده کرد. همه کاربران Wordfence، از جمله کاربران Wordfence free، Wordfence Premium، Wordfence Care و Wordfence Response در برابر این آسیبپذیری با محافظت داخلی اسکریپت بین سایتی Wordfence Firewall محافظت میشوند. علاوه بر این، Wordfence رمزهای عبور برنامه را به طور پیش فرض غیرفعال میکند.
هسته وردپرس با قرار گرفتن در معرض اطلاعات حساس تا نسخههای 6.3.1 از طریق فهرست دیدگاهها آسیب پذیر است. این امر به کاربران احراز هویت شده، با امتیازات سطح مشارکت کننده یا بالاتر، اجازه میدهد تا نظرات مربوط به پستهای محافظت شده را مشاهده کنند. قبل از وردپرس 6.3.2، کاربران میتوانستند دیدگاههای پستها را حتی زمانی که به آن پستها دسترسی نداشتند، مشاهده کنند. در حالی که این در اکثر موارد یک مشکل نسبتا کم تاثیر است، آپدیت امنیتی در وردپرس 6.3.2 حاوی یک پچ بوده که از حریم خصوصی نظرات در پستهای خصوصی یا محافظت شده محافظت میکند.
در حالی که هسته وردپرس مدتی است که آسیبپذیری شناختهشدهای در Object Injection ندارد، آسیبپذیریهای Object Injection در پلاگینها و تمهای مختلف به طور مرتب توسط محققان، از جمله تیم هوشمند Threat Intelligence Wordfence، کشف میشود. همه آسیبپذیریهای Object Injection برای موفقیت به زنجیرههای POP نیاز دارند. قبل از وردپرس 6.3.2، زنجیرههای POP بالقوه در کلاسهای WP_Theme، WP_Block_Type_Registry، WP_Block_Patterns_Registry، Requests/Session، Request/Iri، و Requests/Hoks وجود داشتند. در حالی که نتوانستند یک اکسپلویت کاربردی برای اینها در زمان موجود ایجاد کنند، وصلههای مربوطه نشان میدهند که برای جلوگیری از سریالسازی غیرمنتظره شی طراحی شده و میتواند منجر به اجرای کد از راه دور شود. به مارک مونپاس از Automattic برای کشف زنجیرههای آسیبپذیر POP اعتبار دارد.
هسته وردپرس با قرار گرفتن در معرض اطلاعات حساس در نسخههای بین 4.7.0 و 6.3.1 از طریق نقطه پایانی کاربر REST آسیب پذیر است. در حالی که نتایج جستجو نشانیهای ایمیل کاربر را نشان نمیدهند مگر اینکه کاربر درخواستکننده قابلیت «list_users» را داشته باشد، جستجو در ستون user_email اعمال میشود. این موضوع میتواند به افراد احراز هویت نشده اجازه دهد تا با استفاده از پستها یا صفحات منتشر شده در سایت، آدرسهای ایمیل کاربران را به زور تأیید کنند.
در حالی که وردپرس قبل از 6.3.2 مستقیماً آدرسهای ایمیل کاربر را بدون قابلیت “list_users” به کاربران نمایش نمیداد، همچنان ستون ایمیل کاربر را در wp_users جستجو میکرد. این بدان معناست که میتوان با وارد کردن آدرس ایمیل جزئی در پارامتر جستجو، جستجوی اجباری یا تأیید آدرس ایمیل هر کاربر با یک پست یا صفحه منتشر شده را تأیید کرد که به طور بالقوه بر حریم خصوصی کاربر تأثیر میگذارد. در آپدیت امنیتی در وردپرس 6.3.2 برای حل این موضوع، ستونهای جستجو را برای کاربران بدون قابلیت “list_users” فقط به ستونهای نمایش داده شده محدود میکند.
هسته وردپرس در نسخههای بین 4.7.0 و 6.3.1 در برابر Denial of Service از طریق Cache Poisoning آسیب پذیر است. در مواردی که هدر X-HTTP-Method-Override در یک درخواست به یک نقطه پایانی REST ارسال شد و نقطه پایانی یک خطای 4xx را برگرداند، خطا میتواند کش شود و در نتیجه سرویس نادیده گرفته شود. پاسخها به درخواستهای REST API برای کاربرانی که وارد سیستم شدهاند ذخیره نمیشوند، اما هسته وردپرس قبل از نسخه 6.3.2 دارای یک مورد خاص بود که در پیکربندیهای ذخیرهشده، یک مهاجم احراز هویت نشده میتوانست با استفاده از X-HTTP-Method یک درخواست به API REST ارسال کند. هدر را به یک نقطه پایانی عمومی لغو کرده و یک خطای 4xx دریافت میکند، یا به این دلیل که نقطه پایانی دسترسی به آن روشها را محدود میکند یا اصلاً از آنها پشتیبانی نمیکند. در مواردی که خطا در حافظه پنهان ذخیره میشود، هر بازدیدکننده دیگری که احراز هویت نشده است سعی میکند دادهها را از آن نقطه پایانی بازیابی کند، خطای کش 4xx را مشاهده خواهد کرد.
هسته وردپرس به دلیل پاکسازی ناکافی ورودی و خروجی در بلوک فوتر، از طریق آن در نسخههای بین 6.3 و 6.3.1 در برابر اسکریپتهای بین سایتی ذخیره شده آسیب پذیر است. این مسئله این امکان را برای مهاجمان احراز هویت شده با مجوزهای سطح مشارکت کننده و بالاتر فراهم میکند تا اسکریپتهای وب دلخواه را در صفحاتی وارد کنند و هر زمان که کاربر به آن صفحه دسترسی پیدا کند اجرا شود. وردپرس قبل از 6.3.2 به اندازه کافی محتوای بلوکهای فوتر را پاکسازی نمیکرد و به کاربران تأیید شده با امتیازات سطح مشارکت کننده یا بالاتر اجازه میداد جاوا اسکریپتی را وارد کرده که هنگام بازدید از صفحه حاوی پاورقی اجرا شود. در حالی که ورودی تا حدی در سمت کلاینت حذف میشود، میتوان یک درخواست را رهگیری کرد و تگهای اسکریپت بدون مشکل را فوتر اضافه کرد. وردپرس یک پچ برای این مشکل امنیتی در نسخه 6.3.2 منتشر کرده است.
مانند تمام آسیبپذیریهای Cross-Site Scripting، میتوان از این آسیبپذیری برای کنترل یک سایت با ایجاد بخش مدیریت و دسترسی به بکاند سایت استفاده کرد که بسیار خطرساز است.
هسته وردپرس به دلیل پاکسازی ناکافی ورودی و خروجی از طریق ویژگیهای بلوک ناوبری در نسخههای بین 5.9 و 6.3.1 در برابر اسکریپتهای بین سایتی ذخیره شده آسیب پذیر است. این امکان را برای مهاجمان تأیید شده با امتیازات سطح مشارکت کننده و بالاتر فراهم میکند تا اسکریپتهای وب دلخواه را در صفحاتی تزریق کنند که هر زمان که کاربر به صفحه موردنظر دسترسی پیدا کرد اجرا شود.
ویرایشگر بلوک وردپرس شامل یک بلوک ناوبری است که شامل فلشها یا شیورونهایی برای نمایش پستهای قبلی و بعدی است. وردپرس قبل از 6.3.2 نتوانست به اندازه کافی ویژگی استفاده از این مورد را تعیین کند. در نتیجه، هر کاربری که به ویرایشگر پست دسترسی داشته باشد میتواند جاوا اسکریپت مخرب را در عنصر پیمایش وارد کند و هر زمان که بازدیدکننده به آن صفحه دسترسی پیدا کند، اجرا شود. مانند تمام آسیبپذیریهای Cross-Site Scripting، میتوان از این آسیبپذیری برای کنترل یک سایت در بخش مدیریت استفاده کرد.