WordPress — популярная система управления контентом, позволяющая пользователям создавать и управлять веб-сайтами с помощью различных плагинов. Одним из таких плагинов, широко используемых более чем на 60,000 XNUMX сайтов, является плагин Bookly для онлайн-бронирования и планирования WordPress. Bookly упрощает и автоматизирует процесс онлайн-бронирования. Однако, как и многие другие плагины WordPress, он также может быть уязвим для злоумышленников.
В марте 2023 года лаборатория безопасности Quick Heal обнаружила уязвимость в плагине Bookly. Сразу после обнаружения уязвимости мы инициировали ответственные процедуры раскрытия информации, чтобы обеспечить её скорейшее устранение. 3 марта 2023 года, после обнаружения уязвимости ранее в тот же день, мы связались со службой поддержки плагина Bookly и предоставили им полную техническую информацию. Мы также уведомили об уязвимости plugins@wordpress.org и Wordfence (CNA). Уязвимость была оперативно обнаружена и получила идентификатор CVE-2023-1172. Команда Bookly работала над разработкой исправления и выпустила его 9 марта 2023 года в версии 21.5.1.
В этой статье мы проведем тщательный анализ первопричины уязвимости, обнаруженной в плагине Bookly, а также рассмотрим исправление, выпущенное для устранения этой проблемы.
Анализ CVE–2023-1172 - Неаутентифицированный сохраненный межсайтовый скриптинг по имени:
Наше исследование показало, что поле «Полное имя» плагина Bookly уязвимо к атакам с использованием хранимого межсайтового скриптинга (XSS) из-за неадекватной очистки входных данных и экранирования выходных данных. Мы также провели дополнительное исследование и обнаружили, что плагин повторно использует введенное пользователем поле «Полное имя» в нескольких файлах, что значительно увеличивает риск нарушений безопасности, если входные данные не были должным образом очищены и экранированы для предотвращения внедрения вредоносного кода. Приведённый ниже фрагмент кода демонстрирует, как используется значение поля «Полное имя»:

Как показано ниже, значение поля «Полное имя» хранится в переменной $codes.

Впоследствии переменная $codes используется во всплывающей подсказке календаря.

Однако, судя по всему, при дальнейшем использовании переменной $codes в программе не принимаются надлежащие меры по очистке.

Решение проблемы: взгляд на патч
Изучив патч, устраняющий уязвимость, мы обнаружили, что переменная $codes теперь достаточно хорошо защищена, чтобы предотвратить любые потенциальные нарушения безопасности в программе. В частности, патч использует PHP-функцию «strip_tags» для очистки переменной $codes и предотвращения атаки до её использования в другом месте кода.

Заключение
В этой публикации была описана уязвимость в плагине Bookly, которая позволяла неавторизованным злоумышленникам внедрять вредоносные скрипты, потенциально ставя под угрозу весь сайт владельца сайта при доступе к подсказке календаря из плагина. К счастью, уязвимость была полностью устранена в версии 21.5.1. Мы настоятельно рекомендуем владельцам сайтов на WordPress обновить свои сайты до последней версии плагина (на момент написания статьи это была версия 21.6), чтобы предотвратить потенциальные атаки.
Все SEQRITE Клиенты Quick Heal защищены от любых эксплойтов, нацеленных на эту уязвимость, благодаря следующим сигнатурам:
- HTTP/CVE-2023-1172!VK.46842
- HTTP/CVE-2023-1172!VK.47543



