Было опубликовано сообщение об уязвимости безопасности в популярном плагине WordPress «Advanced Custom Fields: Extended», который имеет рейтинг 9,8 и затрагивает до 100 000 установок.
Уязвимость позволяет злоумышленникам, не прошедшим проверку подлинности, зарегистрироваться с правами администратора и получить полный контроль над веб-сайтом и всеми настройками.
Содержание
Расширенные пользовательские поля: Расширенный плагин
Плагин «Advanced Custom Fields: Extended» является дополнением к популярному плагину «Advanced Custom Fields Pro». Он используется владельцами и разработчиками веб-сайтов WordPress для расширения функциональности настраиваемых полей, управления внешними формами, создания страниц параметров, определения пользовательских типов сообщений и таксономий, а также настройки интерфейса администрирования WordPress.
Плагин широко используется, имеет более 100 000 активных установок и часто развертывается на веб-сайтах на основе интерфейсных форм и расширенных рабочих процессов управления контентом.
Кто может воспользоваться этой уязвимостью?
Эта уязвимость может быть использована злоумышленниками, не прошедшими проверку подлинности, поэтому нет никаких препятствий для получения более высокого уровня привилегий перед началом атаки. Если уязвимая версия плагина существует с определенной конфигурацией, любой в Интернете может попытаться воспользоваться этой уязвимостью. Этот тип раскрытия значительно увеличивает риск, устраняя необходимость в раскрытии учетных данных или инсайдерском доступе.
Угроза повышения привилегий
Уязвимость представляет собой эскалацию привилегий, вызванную отсутствием ролевых ограничений при регистрации пользователей.
В частности, функция Insert_user плагина не ограничивает, какие роли пользователя могут быть назначены, когда кто-то создает новую учетную запись пользователя. В обычных обстоятельствах WordPress должен строго контролировать, какие роли пользователи могут выбирать или назначать при регистрации.
Поскольку эта проверка отсутствует, злоумышленник может сделать запрос на регистрацию, который явным образом назначит роль администратора новой учетной записи.
Эта проблема возникает только тогда, когда конфигурация формы сайта сопоставляет настраиваемое поле непосредственно с полем роли WordPress. Если это условие выполнено, плагин принимает указанное значение роли, не проверяя, является ли оно безопасным или законным.
По-видимому, ошибка связана с недостаточной проверкой поля формы «Выбор» на стороне сервера. Похоже, что плагин использовал HTML-форму для ограничения ролей, которые может выбирать пользователь. Например, разработчик может создать форму регистрации пользователя только с ролью «Подписчик» в качестве опции. Однако в серверной части не было проведено проверки того, что роль пользователя, под которой входил подписчик, соответствует ролям пользователя, которыми форма должна быть ограничена.
Вероятно, произошло следующее: злоумышленник, не прошедший проверку подлинности, мог проверить HTML-код формы, увидеть поле, связанное с ролью пользователя, и перехватить HTTP-запрос, что позволило злоумышленнику, например, изменить значение на «role=administrator» вместо отправки «role=subscriber». Код, ответственный за действие Insert_user, принял эти входные данные и передал их непосредственно функциям создания пользователей WordPress. Он не проверял, действительно ли «Администратор» был одним из разрешенных вариантов в списке «Выбрать» поля.
В журнале изменений плагина следующая запись указана как один из патчей для плагина:
«Принудительная проверка полей внешнего интерфейса на основе соответствующих настроек «выбора».
Эта запись в журнале изменений означает, что плагин теперь активно проверяет отправку форм внешнего интерфейса, чтобы убедиться, что отправленное значение соответствует определенным «выборам» поля, а не доверяет опубликованному значению.
В журнале изменений также есть такая запись:
«Модуль: Формы — добавлена мера безопасности для форм, позволяющих выбирать роль пользователя»
Эта запись означает, что в плагин добавлена защита на стороне сервера для предотвращения злоупотреблений при разрешении внешней форме устанавливать или выбирать роль пользователя WordPress.
В целом, исправления плагина привели к усилению контроля проверки форм внешнего интерфейса и сделали их более настраиваемыми.
Что могут получить злоумышленники
В случае успешной эксплуатации злоумышленник получает доступ на уровне администратора к сайту WordPress.
Этот уровень доступа позволяет злоумышленникам:
- Установите или измените плагины и темы
- Внедрить вредоносный код
- Создание учетных записей администратора бэкдора
- Украсть или манипулировать данными веб-сайта
- Перенаправлять посетителей или распространять вредоносное ПО
Получение доступа администратора — это полный контроль над сайтом.
Совет по границе слов описывает проблему следующим образом:
«Плагин Advanced Custom Fields: Extended для WordPress уязвим к повышению привилегий во всех версиях до 0.9.2.1 включительно. Это связано с тем, что функция Insert_user не ограничивает роли, с которыми пользователь может зарегистрироваться. Это позволяет неаутентифицированным злоумышленникам предоставить роль «Администратора» во время регистрации и получить административный доступ к веб-сайту».
Как описывает Wordfence, плагин доверяет предоставленным пользователем данным для ролей учетной записи, хотя это не должно быть сделано. Это доверие позволяет злоумышленникам обходить стандартную защиту WordPress и предоставлять себе максимально возможный уровень разрешений.
Wordfence также сообщает, что заблокировал активные попытки использования этой уязвимости, указывая на то, что злоумышленники уже сканируют веб-сайты на предмет компрометации.
Условия эксплуатации
Уязвимость не может быть автоматически использована на каждом сайте, на котором установлен плагин.
Для эксплуатации необходимо следующее:
- На сайте используется форма интерфейса, предоставляемая плагином.
- Форма сопоставляет настраиваемое поле непосредственно с ролью пользователя WordPress.
Статус исправления и что следует делать владельцам сайтов
Уязвимость затрагивает все версии до 0.9.2.1 включительно. Проблема решена в версии 0.9.2.2, в которой представлены дополнительные проверки и проверки безопасности для форм внешнего интерфейса и обработки ролей пользователей.
Вход для чиновника Журнал изменений для ACF Extended Basic 0.9.2.2:
- Модуль: Формы — принудительная проверка полей внешнего интерфейса на основе соответствующих настроек «выбора».
- Модуль: Формы — добавлена мера безопасности для форм, позволяющих выбирать роль пользователя.
- Модуль: Формы — добавлен хук acfe/form/validate_value для проверки полей по отдельности на передней панели.
- Модуль: Формы — добавлен хук acfe/form/pre_validate_value для обхода принудительной проверки.
Владельцы веб-сайтов, использующие этот плагин, должны немедленно обновить его до последней исправленной версии. Если обновление невозможно, плагин следует отключить до тех пор, пока исправление не будет применено.
Учитывая серьезность уязвимости и отсутствие аутентификации, необходимой для ее использования, отсрочка действий сделает затронутые веб-сайты уязвимыми для полного захвата.
Рекомендованное изображение с сайта Shutterstock/Art Furnace

