Уязвимость безопасности находится в шорткоде встроенного Jetpack модуля, поэтому, если Вы не активировали его на сайте, Вас не затронет эта проблема. Атакующий может использовать данную уязвимость, оставив комментарий, подготовленный шорткод, чтобы выполнить вредоносный код Javascript на уязвимом сайте. Поскольку это Cross-Site Scripting (XSS) уязвимость, она может позволить злоумышленнику похитить учетные данные администраторов, вставить SEO спам на пораженную страницу и перенаправлять посетителей на вредоносные веб-сайты.
Подробнее
Эта уязвимость очень похожа на bbPress уязвимость, которая была описана на прошлой неделе, на сайте первоисточника другой экземпляр текста, небрежно заменяемого некоторыми HTML-тэгами.
В данном случае расследование уязвимости начинается с
comment_text
, использующейся при выводе содержимого комментариев. Vimeo_link
используется таким образом, что он может динамически изменять вывод комментариев.Как Вы можете видеть из приведенных выше регулярных выражений, осуществляется поиск
vimeo
шорткода внутри комментариев. В случае обнаружения совпадений они будут переданы функции vimeo_link_callback
В результате, возвращается HTML — тег, содержащий встроенное видео Vimeo. Давайте посмотрим на что похож полученный результат, отправив комментарий содержащий
<a title='[vimeo 123]’>abc
:Ого, что же там произошло? Похоже, атрибуты заголовка, окончание и одинарные кавычки исчезли. Все, что нужно было сделать — работающий пример, который должен был показать, что мы можем соответствующим образом закрыть наши атрибуты заголовка и вставить новые обработчики произвольного события для доказательства нашей концепции. Как мы уже говорили — это очень легко эксплуатируется.
Авторы исследования работали с командой Jetpack и они сразу же откликнулись, держали нас в курсе обновлений все это время.
Если Вы используете уязвимую версию этого плагина, обновитесь как можно скорее! Если по определенным сделать это невозможно, Вы можете использовать Sucuri Firewall или эквивалентную технологию для решения проблемы.
Комментарии (9)
OstaninKI
01.06.2016 08:22+4Только одно не указано в статье — версия уязвимого плагина…
Укажите, пожалуйста, дабы не мучать общественность хабра
nikitasius
01.06.2016 09:12+1Или просто отключить комментарии в блоге. У меня, к примеру, они изначально выключены.
TimsTims
01.06.2016 09:45+3Или можно отключить веб-сервер. У некоторых именно так и сделано. Однако это не решает проблемы, когда сайтам очень важно принимать комментарии пользователей.
dmitry_ch
01.06.2016 09:15+2Подано так, будто WP всегда был безгрешным, а тут — раз! — нашлась дыра, и ее еще не залатали.
В жизни ситуация обычно другая. Ядро более-менее латают, по мере сил, но сторонние плагины — это сторонние плагины (даже если говорим про функционал плагинов, идущих из коробки). Авторам недосуг (или не по зубам) заткнуть дыры, владельцы/создатели сайто ставят то, что им кажется подходящим по функционалу (из описания), а не только то, что по результатам code review признают безопасным.
Так что вы уж переименуйте пост из «XSS уязвимость по-прежнему сохранятся для WordPress» в «Еще одна XSS нашлась в еще одном плагине для WP». Да и то — вы написали об одном плагине, а ведь сотни их, и вопрос с безопасностью и качеством кода каждого из них — очень неопределенный. Сегодня дырок нет, а в завтрашней версии — уже есть, тут статьями про одну уязвимость в одной версии одного плагина не отделаться.
Amareis
01.06.2016 12:10+1Кстати, у меня уже давненько выросло некое неприятие всех этих кастомных комментов. Есть же disquss, что ещё нужно?
ambientos
01.06.2016 14:20Насколько мне известно, если включено автоматическое обновление данного плагина, то он автоматически обновляется.
web2033
Можно было указать, что речь о конкретном плагине WP. А то из заголовка можно подумать что в ядре проблемы остались. Исправленные версии на jetpack.com
strlock
И в чём, собственно, новость? В плагинах бывают уязвимости? Или, о боже, как всегда, не все обновляют софт?)