Критическая 0-day XSS-уязвимость, угрожавшая десяткам миллионов WP-сайтов, была пропатчена в версии 4.2.1 этой CMS-платформы.

Данная уязвимость позволяла сохранять вредоносный JavaScript в полях комментариев и исполнять его на стороне сервера.

Представители WordPress заявили, что новая версия доступна в режиме автоматического обновления для сайтов, поддерживающих эту функцию, администраторы же могут установить апдейт вручную через Dashboard->Updates->UpdateNow.

Исследователь Йоуко Пюннёнен (Jouko Pynnönen), обнаруживший уязвимость и опубликовавший ее подробности в воскресенье, в комментарии Threatpost заявил, что не тестировал патч, но признал вносимые изменения годными, проверив их специальным инструментом.

Уязвимость кроется в ядре движка WordPress 4.2 и более ранних версий, что на фоне нескончаемых брешей в плагинах выглядит редкостью. Уязвимость позволяет атакующему внедрить JavaScript в поле ввода комментариев; комментарий должен содержать не менее 66 тыс. символов, скрипт же отрабатывает при его просмотре, отметил эксперт.

По словам Пюннёнена, атакующий может внедрить JavaScript, используя и более длинный комментарий; при просмотре комментария аутентифицированным администратором код будет исполнен на стороне сервера при помощи плагина или редактора тем. В дополнение к исполнению произвольного кода атакующий также может создавать новые аккаунты с администраторскими правами, изменять учетные данные или же выполнять любые действия с разрешениями уровня администратора.

Эксперт пояснил, что длинный комментарий будет урезан при внесении в базу данных, что приведет к генерации искаженного HTML-кода.

«Атакующий может использовать любые атрибуты в доступных HTML-тэгах», — отметил Пюннёнен.

У разработчиков WordPress была весьма загруженная неделя. 21 апреля они выпустили апдейт для WordPress 4.1.1 и более ранних версий, пропатчив схожую XSS-уязвимость, обнаруженную Седриком ван Бокхавеном (Cedric Van Bockhaven). Данный баг требовал использования особых символов в комментарии, что приводило к некорректному усечению строки и позволяло атакующему исполнять произвольный код.

Эксперт сообщил об уязвимости в феврале 2014 года, отметив в блоге, что, поскольку уязвимость крылась в ядре движка на уровне базы данных, патч требовал длительного тестирования.

«Фикс должен был быть детально протестирован, чтобы все вариации сайтов с различными настройками и используемыми наборами символов могли нормально функционировать. WordPress написан таким образом, что будет работать на любой системе, в которой есть PHP и веб-сервер, вне зависимости от используемого функционала, — пишет Бокхавен. — Как следствие, установить WordPress проще простого, но при этом процесс разработки должен учитывать комплекс факторов для достижения (обратной) совместимости».

Пюннёнен заявил, что решил обнародовать подробности 0-day-уязвимости, а не сообщать о ней разработчикам WordPress из-за длительного срока разработки фикса к багу Бокхавена.

«Как мне кажется, разработка патча не должна занимать столько времени. Проверить длину комментария не так уж и тяжело. Начинающий PHP-программист может сделать это при помощи одной строки кода, в то время как решение от WordPress более общее (они проверяют все, что попадает в базу данных, а не только комментарии), — отметил Пюннёнен. — Проверка на наличие некорректных символов тоже весьма легко реализуется, даже с учетом различных языков и наборов символов, поддерживаемых WordPress. Мне на ум не приходит ни одного достойного аргумента, которым можно было бы оправдать столь долгий срок разработки».

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