Виправлена вразливість в популярному плагіні SEOPress

29 липня 2021 року команда Wordfence Threat Intelligence почала скоординоване розкриття вразливості, виявленої в плагіні SEOPress. Цей плагін встановлений на більш ніж 100000 веб-сайтів. Вразливість дозволяла зловмиснику вводити довільні веб-скрипти на сайт, і ці скрипти виконувалися кожного разу, коли користувач відвідував сторінку з усіма записами.

Користувачі Wordfence Premium отримали нове правило для брандмауера ще 29 липня 2021 року. Аналогічний захист з’явиться у вільній версії Wordfence лише 28 серпня.

Фахівці Wordfence зв’язалися з розробником плагіна 29 липня. Після того, як вони отримали від нього зворотний зв’язок, був ініційований процес повного розкриття інформації. В результаті готовий патч (випуск 5.0.4) з’явився 4 серпня 2021 року.

Ми настійно рекомендуємо вам оновити плагін SEOPress негайно до останньої версії 5.0.4.

SEOPress був створений для оптимізації показників SEO WordPress сайтів. Він має різні вбудовані в нього функції, включаючи можливість додавати метадані SEO, крихти, схеми тощо. Одним з варіантів плагіна було додавання назви та опису SEO до публікацій, що можна було б зробити, зберігши зміни на посадах або через новий кінцеву точку (endpoint) rest-API.

	
register_rest_route('seopress/v1', '/posts/(?P<id>d+)/title-description-metas', [
    'methods'             => 'PUT',
    'callback'            => [$this, 'processPut'],
    'args'                => [
        'id' => [
            'validate_callback' => function ($param, $request, $key) {
                return is_numeric($param);
            },

На жаль, реалізація цієї кінцевої точки REST API не була безпечною. Permissions_callback для кінцевої точки була підтверджена тільки тоді, коли користувач мав дійсний код REST-API в запиті. А дійсний код REST-API може бути згенерований будь-яким автентифікованим користувачем WordPress за допомогою вбудованої дії WP AJAX. Відповідно, будь-який автентифікований користувач – скажімо, абонент – може зателефонувати на маршрут REST з дійсним кодом nonce та оновити назву та опис SEO для будь-якої публікації.

'permission_callback' => function ($request) {
    $nonce = $request->get_header('x-wp-nonce');
    if ( ! wp_verify_nonce($nonce, 'wp_rest')) {
        return false;
    }
 
    return true;

Також зловмисники могли підключати шкідливі веб-скрипти, враховуючи відсутність очищення або втечу збережених параметрів. У майбутньому ці веб-скрипти можуть бути виконані кожного разу, коли користувач відвідує сторінку “Всі повідомлення”. Уразливості XSS, такі як ця, призводять до різних наслідків, починаючи від створення нових облікових записів адміністратора і закінчуючи введенням веб-оболонок, довільних переадресацій і т.д.

Джерело: wordfence.com

Прокоментувати

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *