Участники open-source проекта WordPress выпустили патч для уязвимости, грозящей захватом контроля над сайтами. Пользователям всех прежних версий WordPress рекомендуется произвести обновление до сборки 4.8.3 в кратчайшие сроки.

«WordPress версий 4.8.2 и ниже подвержены уязвимости из-за того, что $wpdb->prepare() создает неожиданные и небезопасные запросы, — говорится в анонсе. — Такая ситуация потенциально грозит атакой посредством внедрения SQL-кода (SQLi)». При этом команда WordPress подчеркнула, что ядро CMS-системы этот баг напрямую не затрагивает, однако в новой сборке предусмотрена дополнительная защита на тот случай, если какие-то плагины или темы случайно спровоцируют проявление этой уязвимости.

Согласно записи Гэри Пендергаста (Gary Pendergast), адресованной разработчикам, данная проблема была решена изменением поведения защитной функции esc_sql(). К сожалению, из-за этого некоторым создателям плагинов придется переписывать уже используемые коды.

Ныне закрываемую брешь обнаружил Энтони Феррара (Anthony Ferrara) из Lingo Live. В своей блог-записи исследователь отметил, что программную ошибку, приведшую к появлению уязвимости, изначально обнаружил не он. Разработчики WordPress тогда же попытались ее исправить, выпустив версию 4.8.2. К сожалению, их усилия себя не оправдали, и за месяц с небольшим Ферраре удалось разработать новую атаку.

Исследователь предполагает, что и на этот раз получится то же самое. «Система изначально спроектирована неверно», — уверен баг-хантер. В своем отчете, поданном 20 сентября через платформу HackerOne, Феррара посоветовал команде WordPress добавить в prepare() проверку на наличие двойного вызова при подготовке оператора SQL, чтобы можно было отсеять потенциально опасные запросы.

Именно так и поступили разработчики, однако исследователь все же остался недоволен, так как первопричину уязвимости новый патч не устранил. Феррара убежден, что в WordPress надо поменять весь механизм prepare, чтобы вообще исключить возможность двойного вызова этой функции при генерации запроса, — как это сделали, например, разработчики phpBB. Исследователь не преминул отметить, что для WordPress это будет солидное изменение, но оно, как показала практика, позволит свести SQLi-атаки к минимуму.

А пока Феррара рекомендует операторам WordPress-сайтов как можно скорее обновить CMS и плагины, замещающие стандартный объект $wpdb (такие как HyperDB, LudicrousDB и т. п.). Хостинг-провайдерам, по совету исследователя, следует обновить wp-db.php для клиентов; можно также ввести специальные правила на защитных экранах. От разработчиков плагинов дополнительных превентивных мер не потребуется, так как их уже реализовали на уровне CMS.

Категории: Аналитика, Главное, Уязвимости