Вступление
6 мая 2015 года была раскрыта критическая ошибка WordPress, которая потенциально может затронуть миллионы пользователей. Уязвимость, которая на самом деле связана с компонентами, использующими пакет шрифтов значков «Genericons», может сделать ваш сайт открытым для атак межсайтового скриптинга (XSS).
В этой статье мы расскажем о влиянии этой уязвимости, о том, как проверить, уязвим ли ваш сайт, и какие действия вы должны предпринять, если обнаружите, что на вас влия.
Объяснение уязвимости
Фактическая уязвимость присутствует в пакете шрифтов под названием «Genericons», а не в базовой установке WordPress. К сожалению, этот пакет шрифтов используется «TwentyFifteen», тема установлена и включена в WordPress по умолчанию. Уязвимость также затронула популярный плагин для настройки и улучшения WordPress под названием «JetPack», который имеет более миллиона активных установок, а также, возможно, плагинов и тем.
Уязвимость существует в одном файле с именем + example.html +
, который включен в пакет Genericon. Это необязательный файл, который был включен для демонстрации шрифта. Однако он включает в себя фрагмент jQuery, который представляет уязвимость, потенциально допускающую использование межсайтовых сценариев на основе DOM. Любые темы или плагины, которые использовали более современные версии пакета «Genericons» без удаления этого файла, были уязвимы.
Атака межсайтовых сценариев на основе DOM работает путем изменения среды DOM, интерпретируемой браузером пользователя, в результате чего действия сценариев выполняются способом, противоречащим их первоначальному замыслу. Чтобы воспользоваться этой уязвимостью, пользователь должен быть склонен щелкнуть по специально созданной ссылке при входе в установку WordPress. Если приложение имеет такой тип уязвимости, сервер не может легко предотвратить нежелательное поведение, потому что действия происходят внутри самого браузера. К счастью, устранение уязвимости в этом случае тривиально.
Имеет ли мой сервер эту уязвимость?
7 мая 2015 года был выпущен WordPress 4.2.2, который исправляет эту проблему. Если вы установили или обновили последнюю версию WordPress до или после этой даты, ваша установка должна быть защищена. Любые дроплеты DigitalOcean, созданные в WordPress одним щелчком мыши или после этой даты, не должны быть уязвимы.
Если вы используете экземпляр WordPress, который был установлен до этой даты и не обновлен до 4.2.2, ваш сайт может быть уязвим. Если это так, ваша панель администратора будет отображать предупреждение, которое выглядит следующим образом:
изображение: https: //assets.digitalocean.com/articles/wordpress_genericons_vuln/update_warning.png [Предупреждение об обновлении WordPress]
Вы также можете перейти в корневой каталог документов вашего сервера и найти сами файлы + example.html
. Например, если вы находитесь в корневом каталоге документов вашего сервера, вы можете ввести:
find . -path "*/genericons/example.html"
Результаты будут выглядеть примерно так:
find output./wp-content/themes/twentythirteen/genericons/example.html
./wp-content/themes/twentyfifteen/genericons/
./wp-content/themes/twentyfourteen/genericons/example.html
В приведенном выше примере файл «+ example.html» был найден в теме «Двадцать пятнадцать», что указывает на уязвимость этой установки. Файлы + example.html +
в других темах, показанных здесь, на самом деле не являются уязвимыми, так как они не содержат ошибочных строк jQuery. Найдите файлы + example.html +
в каталоге +entyfifteen / genericons +
или в любых плагинах, которые у вас могут быть.
Как исправить вашу установку
Рекомендуемый способ исправления вашей системы - просто обновить WordPress. Это защитит вашу систему не только от этой уязвимости, но и от любых других проблем, которые могли быть исправлены.
Если ваши разрешения позволяют, вы обычно можете обновить установку, используя элементы управления обновлением панели администратора. Вы можете увидеть эту опцию в виде ссылки на главной странице (как показано на предыдущем снимке экрана). Если нет, вы можете перейти к опции «Обновления» на панели управления и нажать кнопку «Обновить сейчас»:
изображение: https: //assets.digitalocean.com/articles/wordpress_genericons_vuln/update_now.png [Обновление WordPress сейчас]
Вам также, вероятно, придется обновлять свои темы и плагины отдельно.
Несмотря на то, что мы настоятельно рекомендуем полностью обновить WordPress (вместе с любыми затронутыми темами или плагинами), вы также можете легко вручную удалить нарушающие файлы.
Для этого войдите на сервер WordPress и перейдите в корневой каталог документа. Вы можете удалить оскорбительные файлы, набрав:
sudo find . -path "*/genericons/example.html" -exec rm -f {} \;
Затем вы можете снова проверить структуру каталогов:
find . -path "*/genericons/example.html"
Все экземпляры + example.html +
в каталоге + genericons +
должны быть удалены.
Заключение
Хотя число пользователей, которые были уязвимы для этой ошибки, было очень большим, исправление очень простое и может быть выполнено с помощью обычного метода обновления WordPress. Если вы управляете установками WordPress для своих собственных целей или для клиентов, исправление, доступное в 4.2.2, легко закроет эту уязвимость. Как всегда, один из лучших способов обеспечения безопасности ваших установок WordPress - это немедленное применение любых обновлений безопасности.