Вразливість, що допускає підстановку JavaScript-коду через WordPress-плагін OptinMonster

У WordPress-доповненні OptinMonster, що має більше мільйона активних установок та застосовується для організації виведення спливаючих повідомлень та пропозицій, виявлено вразливість (CVE-2021-39341), що дозволяє розмістити свій JavaScript-код на сайті, що використовує вказане доповнення. Уразливість усунена у випуску 2.6.5. Для блокування доступу через захоплені ключі після інсталяції оновлення розробники OptinMonster анулювали всі раніше створені ключі доступу до API і додали обмеження щодо використання ключів WordPress-сайтів для зміни кампаній OptinMonster.

Проблема викликана наявністю REST-API /wp-json/omapp/v1/support, доступ до якого був можливий без автентифікації - запит виконувався без додаткових перевірок за наявності в заголовку Referer рядка "https://wp.app.optinmonster.test" і під час встановлення типу HTTP-запиту в «OPTIONS» (перевизначається за допомогою HTTP-заголовка «X-HTTP-Method-Override»). Серед даних, що повертаються при зверненні до REST-API, що розглядається, був ключ доступу, що дозволяє відправляти запити до будь-яких обробників REST-API.

За допомогою отриманого ключа атакуючий міг внести зміни до будь-яких спливаючих блоків, що показуються за допомогою OptinMonster, у тому числі організувати виконання JavaScript-коду. Отримавши можливість виконати свій JavaScript-код у контексті сайту, атакуючий міг перенаправити користувачів на свій сайт або організувати підстановку привілейованого облікового запису в web-інтерфейс при виконанні підставленого JavaScript-коду адміністратором сайту. Маючи доступ до web-інтерфейсу атакуючий міг домогтися виконання свого PHP-коду на сервері.

Джерело: opennet.ru