ГлавнаяНовостиРелиз безопасности WordPress 4.2.1

Релиз безопасности WordPress 4.2.1

В WordPress 4.2 и ниже была найдена серьезная XSS уязвимость, позволяющая анонимному комментатору полностью захватить сайт. Релиз 4.2.1 устраняет данную уязвимость.

Технические детали

Как сообщил автор данной уязвимости, в таблице комментариев по умолчанию используется тип поля TEXT, который может хранить лишь 64 килобайт данных. При публикации комментария длиннее, MySQL просто обрезает остаток, и уже при выводе комментария на странице в WordPress, выводятся лишь первые 65 тысяч символов.

Это позволяет злоумышленнику опубликовать комментарий, который проходит проверку на валидность при его написании, но обрезав последнюю часть (например закрывающийся тег), содержимое становится опасным для вывода, т.к. содержит нефильтрованный код JavaScript. В своем демо-ролике Jouko Pynnönen показал, как с помощью этой уязвимости ему удалость залить шелл-скрипт на сервер с WordPress.

Обновление

Обновление доступно для всех веток, поддерживающие автоматические фоновые обновления (от 4.2 до 3.7). Если ваш сайт еще не обновился автоматически, то мы рекомендуем сделать это самостоятельно как можно скорее.

После обновления вы можете просканировать базу данных – возможно кто-то уже оставил на вашем сайте подобный комментарий. Сделать это можно с помощью следующего SQL запроса:

SELECT comment_ID FROM wp_comments WHERE LENGTH(comment_content) >= 65535;

Он покажет вам идентификаторы комментариев, длинна которых более 64кб. Проанализировав содержимое можно понять, что именно комментатор/злоумышленник пытался сделать на вашем сайте, а поле comment_author_IP даст вам его IP адрес. Учтите, что при обновлении базы данных, эти комментарии удаляются, поэтому запрос необходимо выполнить до этапа обновления базы данных.

Подписаться на рассылку

Подписаться → Подпишитесь на бесплатную рассылку журнала WP Magazine и получайте новости, события, подборки тем и плагинов, уроки, советы и многое другое в мире WordPress!

  • Vitaliy Ralle

    MySQL returned an empty result set (i.e. zero rows).
    Спасиб, можно спать спокойно)