آخرین نسخه رایگان پلاگین محبوب LiteSpeed Cache (لایت اسپید کش یا LSCWP) وردپرس دارای یک آسیب پذیری جدید افزایش سطح دسترسی است که میتواند به بازدیدکنندگان احراز هویت نشده سایت اجازه دهد تا حقوق دسترسی admin را به دست آورند.
LiteSpeed Cache یکی از پرکاربردترین و محبوبترین افزونههای کش در وردپرس است که برای بهبود عملکرد وب سایت استفاده میشود و دارای بیش از ۶ میلیون نصب فعل میباشد.
پلاگین LiteSpeed Cache از WordPress Multisite پشتیبانی میکند و با محبوبترین افزونهها از جمله WooCommerce، bbPress و Yoast SEO سازگار است.
این آسیب پذیری جدید با شدت بالا (CVE-2024-50550) ناشی از یک بررسی هش ضعیف در ویژگی “شبیه سازی نقش” یا ” role simulation” پلاگین است که برای شبیه سازی نقشهای کاربران به منظور کمک به خزنده (crawler ) در اسکن سایت از سطوح مختلف کاربری طراحی شده است.
آسیب پذیری CVE-2024-50550 در نسخه ۶.۵.۲ پلاگین LiteSpeed Cache برطرف شده است. تابع این ویژگی که is_role_simulation()میباشد، دو بررسی اولیه را با استفاده از مقادیر هش امنیتی ضعیف ذخیره شده در کوکیها انجام میدهد (litespeed_hash و litespeed_flash_hash).
public function is_role_simulation()
{
if (is_admin()) {
return;
}
if (empty($_COOKIE['litespeed_hash']) && empty($_COOKIE['litespeed_flash_hash'])) {
return;
}
self::debug('starting role validation');
// Check if is from crawler
// if ( empty( $_SERVER[ 'HTTP_USER_AGENT' ] ) || strpos( $_SERVER[ 'HTTP_USER_AGENT' ], Crawler::FAST_USER_AGENT ) !== 0 ) {
// Debug2::debug( '[Router] user agent not match' );
// return;
// }
// Flash hash validation
if (!empty($_COOKIE['litespeed_flash_hash'])) {
$hash_data = self::get_option(self::ITEM_FLASH_HASH, array());
if ($hash_data && is_array($hash_data) && !empty($hash_data['hash']) && !empty($hash_data['ts']) && !empty($hash_data['uid'])) {
if (time() - $hash_data['ts'] < 120 && $_COOKIE['litespeed_flash_hash'] == $hash_data['hash']) {
self::debug('role simulate uid ' . $hash_data['uid']);
self::delete_option(self::ITEM_FLASH_HASH);
wp_set_current_user($hash_data['uid']);
return;
}
}
}
// Hash validation
if (!empty($_COOKIE['litespeed_hash'])) {
$hash_data = self::get_option(self::ITEM_HASH, array());
if ($hash_data && is_array($hash_data) && !empty($hash_data['hash']) && !empty($hash_data['ts']) && !empty($hash_data['uid'])) {
if (time() - $hash_data['ts'] < $this->conf(Base::O_CRAWLER_RUN_DURATION) && $_COOKIE['litespeed_hash'] == $hash_data['hash']) {
if (empty($hash_data['ip'])) {
$hash_data['ip'] = self::get_ip();
self::update_option(self::ITEM_HASH, $hash_data);
} else {
$server_ips = apply_filters('litespeed_server_ips', array($hash_data['ip']));
if (!self::ip_access($server_ips)) {
self::debug('WARNING: role simulator ip check failed [db ip] ' . $hash_data['ip'], $server_ips);
return;
}
}
wp_set_current_user($hash_data['uid']);
return;
}
}
}
self::debug('WARNING: role simulator hash not match');
}
تنظیمات زیر به منظور اینکه CVE-2024-50550 قابل اکسپلویت باشد، در خزنده پیکربندی میگردد:
- مدت زمان و فواصل اجرا بین 2500 تا 4000 ثانیه تنظیم شده است.
- محدودیت لود سرور روی صفر تنظیم شده است.
- Role simulation یا شبیه سازی نقش روی administratorتنظیم شده است.
مهاجمی که با موفقیت از این آسیب پذیری سوء استفاده کند، میتواند نقش administrator را شبیهسازی کرده و بسیاری از کارهای مخرب از جمله آپلود و نصب افزونهها یا بدافزارهای دلخواه، دسترسی به پایگاههای داده پشتیبان، ویرایش صفحات وب و غیره را به انجام رساند.
این آسیب پذیری توسط یک محقق تایوانی کشف و در 23 سپتامبر 2024 به Patchstack گزارش شد. یک PoC کاملاً کارآمد نیز که یک سناریوی اکسپلویت واقعی را ارائه میدهد، دهم اکتبر برای بررسی بیشتر با LiteSpeed به اشتراک گذاشته شده است.
LiteSpeed Technologies در هفدهم اکتبر، پچی را به منظور اصلاح آسیب پذیری CVE-2024-50550 منتشر کرد (نسخه ۶.۵.۲) که تصادفی بودن مقدار هش را بهبود میبخشد و امکان بروت فورس آن را غیرممکن میسازد.
چندی پیش در دوم اکتبر ۲۰۲۴ نیز یک نقص امنیتی دیگر با شدت بالا در پلاگین LiteSpeed Cache شناسایی شد که هکرها را قادر به اجرای کدهای جاوا اسکریپت دلخواه تحت شرایط خاص میساخت.
این نقص امنیتی (CVE-2024-47374)، به عنوان یک آسیب پذیری اسکریپت بین سایتی (XSS) ذخیره شده توصیف میگردد که بر تمام نسخههای افزونه تا نسخه ۶.۵.۰.۲ تأثیر میگذارد و در نسخه نسخه ۶.۵.۱ برطرف شده است.