ГлавнаяНовостиXSS-уязвимость в Jetpack и Twenty Fifteen

XSS-уязвимость в Jetpack и Twenty Fifteen

Команда Sucuri нашла уязвимость в пакете Genericons, который используется в плагине Jetpack, и во многих темах для WordPress, включая стандартную тему Twenty Fifteen.

Пакет векторных иконок Genericons

Пакет векторных иконок Genericons

Данная уязвимость позволяет злоумышленнику использовать файл example.html, который поставляется вместе с пакетом иконок Genericons, для внедрения произвольного кода JavaScript. Это дает возможность атакующему прочитать куки посетителей и получить доступ в административную панель WordPress.

Сотрудники Sucuri также опубликовали пример запроса, раскрывающий данную уязвимость:

http://example.org/wp-content/themes/twentyfifteen/genericons/example.html#1<img src=1 onerror=alert(1) />

Обновление Jetpack 3.5.3 устраняет эту уязвимость, но Jetpack далеко не единственный продукт использующий данный пакет иконок. Всем пользователям WordPress рекомендуется проверить все (активные и неактивные) темы и плагины на наличие файла example.html, чаще всего в директории genericons или css/genericons, и удалить этот файл, или запретить его отображение с помощью конфигурации веб-сервера.

Многие хостинг-провайдеры уже позаботились о безопасности своих клиентов и избавились от этого файла на своих площадках.

Обновление: WordPress 4.2.2 ищет и удаляет файлы example.html из директорий themes и plugins при обновлении.

Будьте осторожны!

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

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

  • Я так понимаю это из-за того, что в коде есть вот такое?

    permalink = «genericon-» + window.location.hash.split(‘#’)[1];
    attr = jQuery( ‘.’ + permalink ).attr( ‘alt’ );
    cssclass = jQuery( ‘.’ + permalink ).attr(‘class’);

    Т. е. в содержимое permalink может попасть что угодно, ну а дальше понеслось…

    • Кстати, несмотря на то, что я нашел проблемное место в Сафари почему-то не удалось воспроизвести. В Хроме сработало, а Сафари на Маке выпадает с ошибкой уже внутри функции displayGlyph на строчке var permalink = cssclass.split(' genericon-')[1];, когда оно не может выполнить split :)

    • Кому интересно посмотреть код: https://themes.trac.wordpress.org/browser/twentyfifteen/1.1/genericons/example.html#L336 строчка 336