Защита сайта WordPress от XSS-уязвимости в пакете Genericons
Centos, Debian, FreeBSD, Linux, RHEL, Ubuntu, VPS | Комментировать запись
6 мая 2015 года была обнаружена критическая уязвимость WordPress, повышающая восприимчивость сайтов к атакам типа Cross-Site Scripting (XSS). Причиной этой уязвимости являются компоненты, которые используют пакет Genericons.
Эта статья расскажет о воздействии уязвимости на сайт, способах проверки своего сайта на наличие уязвимости и методах её устранения.
Влияние уязвимости на сайт
Данная уязвимость присутствует не в самом ядре WordPress, а в пакете иконок под названием Genericons. К сожалению, данный пакет иконок в стандартной теме WordPress, которая называется TwentyFifteen. Также уязвимость затрагивает популярный плагин WordPress под названием JetPack, который по статистике насчитывает одного миллиона активных установок. Возможно, уязвимость присутствует и в других темах и плагинах WordPress.
Уязвимость обнаружена в файле example.html пакета Genericon. Этот второстепенный файл был добавлен для демонстрации шрифтов. Однако он содержит фрагмент jQuery, который и содержит уязвимость, что позволяет злоумышленнику выполнить межсайтовый скриптинг (XSS) через модель DOM.
XSS-атака в модели DOM изменяет окружение DOM во время обработки данных браузером клиента, в результате чего действия выполняются вопреки оригинальному проекту.
Чтобы воспользоваться уязвимостью, злоумышленник должен заставить пользователя открыть специально созданную ссылку при входе в WordPress. Если данное приложение уязвимо, сервер не сможет предотвратить нежелательное поведение, потому что все действия происходят в браузере. К счастью, эту уязвимость несложно устранить.
Проверка сервера на уязвимость
7 мая 2015 года вышел релиз WordPress 4.2.2, который исправляет данную уязвимость. Следовательно, чтобы устранить уязвимость и защитить свой сайт, достаточно установить новую версию WordPress или обновиться до нее.
Предыдущие версии WordPress (обновлённые до 07.05) остаются уязвимыми. Панель администратора будет выводить такое предупреждение:
WordPress 4.2.2 is available! Please update now.
Можно также открыть каталог document root и найти в нём файлы example.html. Для этого в каталоге document root можно запустить такую команду:
find . -path "*/genericons/example.html"
Результат будет выглядеть примерно так:
find output
./wp-content/themes/twentythirteen/genericons/example.html
./wp-content/themes/twentyfifteen/genericons/example.html
./wp-content/themes/twentyfourteen/genericons/example.html
В этом выводе файл example.html был обнаружен в теме TwentyFifteen, что значит, что данная тема уязвима. Остальные файлы example.html не содержат уязвимости, поскольку в них нет фрагмента jQuery. Найдите все файлы example.html в каталоге twentyfifteen/genericons или в других используемых плагинах.
Устранение уязвимости
Чтобы устранить данную уязвимость, достаточно просто обновить WordPress. Это защитит сайт от взлома и других возможных уязвимостей, содержащихся в старевших версиях программы.
Имея соответствующие права, вы можете обновить установку WordPress, открыв вкладку Обновления в консоли. Также обновления представлены в виде ссылки на главной странице.
Кроме того, рекомендуется отдельно обновить темы и плагины установки.
Также можно просто удалить уязвимые файлы. Для этого откройте каталог document root и введите:
sudo find . -path "*/genericons/example.html" -exec rm -f {} ;
Проверьте структуру каталога:
find . -path "*/genericons/example.html"
Как видите, все файлы example.html были удалены из каталога genericons.
Эта ошибка затрагивает огромное количество пользователей, однако её довольно просто исправить: достаточно просто обновить WordPress, и патч релиза 4.2.2 легко устранит эту уязвимость. Конечно, чтобы обеспечить безопасность установки WordPress, нужно обновить её как можно скорее.
Tags: Genericons, JetPack, WordPress, WordPress 4.2.2, XSS