Уведомление о безопасности Profile Builder
Если вы получили от меня письмо со ссылкой на эту страницу, значит ваш сайт, по всей видимости,
использует версию плагина Profile Builder (плагин WordPress, указанный на WordPress.org как
«Profile Builder» / «User Profile Builder», автор Cozmoslabs, который лежит у вас в файлах
по пути /wp-content/plugins/profile-builder/), попадающую в затронутый диапазон известной
проблемы безопасности. На этой странице описано, в чём состоит проблема, как определить, применима
ли она вообще к вашему сайту, как проверить свою версию, не будучи введённым в заблуждение, и как
обновиться.
Обратите внимание: это не ProfilePress. Существует другой плагин WordPress со схожим названием
(ProfilePress, папка wp-user-avatar), о котором я пишу отдельно. Если папка вашего плагина
называется wp-user-avatar, а не profile-builder, эта страница не та, что вам нужна; смотрите
вместо неё уведомление о ProfilePress. Всё, что написано ниже, касается
только Profile Builder от Cozmoslabs.
Прежде всего, самое важное о данном уведомлении: версия из затронутого диапазона сама по себе ещё не означает, что ваш сайт уязвим. Описанная ниже проблема проявляется только на сайтах, включивших одну конкретную настройку, а увидеть ваши настройки снаружи невозможно:
- Опция Profile Builder «Automatically Log In» (автоматический вход), которая сразу же входит под новым пользователем после завершения им регистрации, должна быть включена.
- Эта опция по умолчанию выключена. Сайт, на котором её никогда не включали, не подвержен этой проблеме, даже на затронутой версии.
Я могу узнать версию вашего плагина из публичного файла, но не могу увидеть вашу конфигурацию, поэтому это уведомление является предупреждением на всякий случай, а не подтверждённой находкой о вашем сайте.
Проблема отслеживается как CVE-2026-15368: это захват учётной записи без аутентификации на этапе автоматического входа в плагине. Она затрагивает версии с 2.1.4 по 3.16.3 и исправлена в 3.16.4. Если у вас установлена затронутая версия, обновите Profile Builder до 3.16.4 или новее. Уязвимости присвоен балл CVSS 8.1. Мне неизвестно о каком-либо публично доступном коде эксплуатации для неё.
Пару слов о срочности, поскольку это условное уведомление. Если вы не используете автоматический вход после регистрации, обновление является обычным плановым обслуживанием. Если используете, пожалуйста, отнеситесь к обновлению как к приоритетной задаче: при такой настройке уязвимость может позволить посетителю без какой-либо учётной записи получить сеанс входа, принадлежащий существующему пользователю, чей адрес электронной почты ему известен, включая администратора, что означало бы передачу управления сайтом.
Это уязвимость плагина, а не ядра WordPress. Полностью обновлённый WordPress не защитит вас, если сам плагин Profile Builder остаётся на затронутой версии.
Это письмо настоящее?
Да. Это добросовестное уведомление в рамках ответственного раскрытия от независимого исследователя безопасности. Я не прошу у вас денег, паролей или доступа к сайту и не пытался в него проникнуть, зарегистрироваться на нём или что-либо эксплуатировать.
Я лишь посмотрел общедоступные файлы, которые ваш сайт отдаёт любому посетителю (так же, как публична ваша главная страница), и отметил номер версии, который публикует плагин. Я специально не отправлял вашу форму регистрации, не создавал учётную запись и не приближался к этапу автоматического входа. Эта проверка никак не затрагивает ваши данные, вашу панель управления или какую-либо закрытую часть сайта (подробнее ниже, в разделе Что я делал и чего не делал).
Если вы хотите убедиться, кто я, контактные данные приведены внизу этой страницы и на странице Обо мне.
Почему это важно
Profile Builder добавляет на сайт WordPress фронтенд-формы регистрации, входа и редактирования профиля, чтобы посетители могли регистрироваться и управлять своими учётными записями, ни разу не заходя в панель управления. Одно из удобств плагина, автоматический вход нового пользователя сразу после завершения регистрации, избавляет его от необходимости заново вводить пароль на отдельной форме входа.
В затронутых версиях это удобство неверно определяло, какую учётную запись входить. Вместо того чтобы использовать только что созданную учётную запись, плагин искал учётную запись по адресу электронной почты, введённому в форму регистрации, и входил под ней. Если указанный адрес принадлежал тому, кто уже имел учётную запись на сайте, заполнявший форму получал сеанс входа именно под этой существующей учётной записью.
Отсюда следуют два вывода, которые тянут в разные стороны. Первый: это происходит только там, где автоматический вход включён. При выключенной настройке плагин вообще не запускает этап автоматического входа, поэтому сайт в таком состоянии через эту проблему недостижим. Второй: там, где настройка включена, ничто не ограничивает последствия рядовыми участниками: передаётся та учётная запись, которая соответствует указанному адресу, а адрес администратора обычно не является секретом. Не требуется ни учётной записи, ни пароля, ни какого-либо содействия со стороны жертвы.
Я описываю это на том уровне, который нужен владельцу сайта, чтобы действовать, и не глубже. Я не публикую подробностей, которые позволили бы кому-то это воспроизвести, и прошу вас не пробовать это ни на своём сайте, ни на чужом. Проверка вашей настройки и номера версии, как описано ниже, даёт всё необходимое, чтобы решить, что делать.
Если в моём письме упоминалась эта проблема, значит версия, о которой сообщает ваш сайт, попадает в затронутый диапазон. Я не проверял, эксплуатируем ли именно ваш сайт, и не могу увидеть, как настроены ваши параметры. Всё, что я наблюдал, это версия.
Затронут ли я?
Всё решают два вопроса, в этом порядке.
Первый: включена ли настройка «Automatically Log In»?
Это решающий вопрос, и ответить на него можете только вы. Проверить свои собственные настройки совершенно безопасно, и в этом весь смысл данной страницы.
- Войдите в панель управления WordPress (обычно по адресу
yourdomain.com/wp-admin). - Откройте в боковом меню пункт Profile Builder, затем перейдите в Settings.
- Найдите переключатель Automatically Log In, описанный как «Enable to automatically log in new users after successful registration» (включить автоматический вход новых пользователей после успешной регистрации).
- Если этот переключатель выключен, эта проблема не достигает вашего сайта, даже на затронутой версии. Обновиться всё же стоит в рамках обычного планового обслуживания.
- Если он включён, проблема касается вас, и обновиться следует незамедлительно.
Ещё одно место, куда стоит заглянуть, если у вас больше одной страницы регистрации: отдельная страница с формой регистрации Profile Builder может иметь собственную копию этой настройки, которая переопределяет глобальную. Если вы ведёте несколько страниц регистрации, стоит проверить каждую из них, а не полагаться только на глобальный переключатель.
Пожалуйста, не пытайтесь воспроизвести эту проблему ни на своём сайте, ни на чужом; чтобы ответить на вопрос выше, это не требуется.
Второй: какая у вас версия?
Вам не обязательно верить мне на слово. Для этого плагина есть один особый способ проверки, который может ввести вас в заблуждение, так что эту часть стоит прочитать внимательно.
В панели управления WordPress (главный источник):
- В панели управления WordPress перейдите в Plugins, затем Installed Plugins.
- Найдите Profile Builder, запись, папка которой называется
profile-builder, и посмотрите версию, указанную под названием.
Из публичного манифеста (без входа): откройте в браузере
yourdomain.com/wp-content/plugins/profile-builder/readme.txt. Строка Stable tag: в начале
файла, это версия, которую сообщает ваша установка, и это один из двух публичных источников,
которые я читаю.
Из исходного кода страницы (без входа): откройте исходный код страницы вашего сайта, на которой отображается форма Profile Builder, и найдите файл клиентской таблицы стилей плагина строго по следующему пути:
/wp-content/plugins/profile-builder/assets/css/style-front-end.css?ver=...
Число после ?ver= у именно этого файла и есть собственная версия плагина. Для этого плагина
оно в точности соответствует выпуску, поэтому я считаю такую проверку надёжным вторым источником.
Ловушка, которой стоит избегать здесь, и в неё легко попасть. Profile Builder включает и другие
компоненты внутри собственной папки плагина, и у них есть собственные, не связанные номера
версий. Встроенное дополнение user-profile-picture в add-ons-free/user-profile-picture/ осталось
на версии 2.6.0 на протяжении нескольких выпусков Profile Builder, а встроенная интеграция с Divi в
assets/misc/divi/ имеет номер 1.0.0. Оба этих числа выглядят тревожно старыми рядом с 3.16.4, но
ни одно из них ничего не говорит об этой проблеме. Если вы считываете версию из исходного кода
страницы, убедитесь, что путь к файлу, из которого вы её берёте, это именно
assets/css/style-front-end.css и никакой другой.
Затем примените это правило, учитывая, что версии сравниваются численно, а не по алфавиту, так
что 3.10.0 новее, чем 3.9.9, хотя как текст она выглядит меньше. Этот плагин действительно проходит
все выпуски от .0 до .9, прежде чем перейти на следующий разряд, так что это различие здесь
важно:
- С 2.1.4 по 3.16.3: потенциально затронуто, в зависимости от ответа на вопрос о настройке выше. Обновляйтесь сейчас.
- 3.16.4 или новее: уже исправлено в части этой проблемы. На момент написания актуальным является выпуск 3.16.6, и лучше всего устанавливать самую свежую доступную версию.
- Старше 2.1.4: этой проблемой не затронуто. Описанная выше конкретная ошибка появилась начиная с 2.1.4, так что действительно более старые установки находятся вне этого диапазона. Тем не менее выпуск такой давности сильно отстал по всем остальным параметрам, и обновиться стоит и по общим соображениям.
Если ни одна из трёх проверок выше не дала читаемой версии, для этого плагина это обычное дело и ни
о чём не говорит: таблица стилей загружается только на страницах, где действительно отображается
одна из его форм, а плагины кеширования или оптимизации нередко удаляют значение ?ver=. Экран в
панели управления из первого способа даёт ответ всегда.
Как обновиться
Самый безопасный путь: обновиться средствами самого WordPress, предварительно сделав резервную копию:
- Сделайте резервную копию сайта (файлы и базу данных), прежде чем что-либо менять. Большинство хостинг-провайдеров предлагают резервное копирование в один клик, либо воспользуйтесь плагином резервного копирования для WordPress.
- В панели управления WordPress перейдите в Dashboard, затем Updates, либо в Plugins, затем Installed Plugins. Если обновление Profile Builder есть в списке, установите его отсюда.
- Если вам удобнее командная строка, WP-CLI делает то же самое:
wp plugin update profile-builder(команда использует имя папки). - Если обновление не появляется, последний выпуск можно взять напрямую со страницы плагина в каталоге WordPress.org, Profile Builder, и обновиться через Plugins, затем Add New Plugin, затем Upload Plugin.
- После обновления подтвердите новый номер версии (3.16.4 или новее) описанными выше способами и убедитесь, что ваши формы регистрации, входа и редактирования профиля по-прежнему работают как обычно.
Если вы используете какие-либо платные дополнения Cozmoslabs для Profile Builder, обновляйте их вместе с основным плагином, поскольку их выпуски обычно синхронизированы.
Раз уж вы этим занялись, стоит убедиться, что ядро WordPress и остальные ваши плагины тоже обновлены, поскольку тот же принцип относится ко всем.
После обновления
Обновление до 3.16.4 или новее закрывает проблему, и для большинства сайтов на этом всё заканчивается. Эта страница является предупреждением на всякий случай, а не отчётом об инциденте: у меня нет возможности узнать, произошло ли что-то на вашем сайте, и я не проверял.
Стоит рассмотреть один дополнительный шаг, и он зависит от того же вопроса о настройке. Если на вашем сайте была включена Automatically Log In, пока он работал на затронутой версии, то по крайней мере теоретически кто-то мог получить сеанс на существующей учётной записи. Обновление закрывает уязвимость, но не отменяет уже полученный доступ, поэтому в таком случае разумны несколько обычных мер предосторожности:
- Просмотрите учётные записи администраторов и любые другие важные учётные записи на предмет записей, которые вы не узнаёте, адресов электронной почты, которые больше не принадлежат нужному человеку, или изменений ролей, которые вы не вносили.
- Проверьте недавние входы и все текущие активные сеансы на предмет всего, что вы не можете объяснить.
- Сбросьте пароли на учётных записях администраторов. Разумным дополнительным шагом будет
перегенерировать секретные ключи и «соли» WordPress в
wp-config.php(новые значения находятся в одном клике в официальном генераторе секретных ключей, и их замена разово завершает сеансы всех пользователей).
Если вы обнаружите что-то, что вас беспокоит, правильным ответом будет отнестись к этому так же, как к любому другому подозрению на несанкционированный доступ. Если на вашем сайте автоматический вход никогда не был включён, достаточно одного лишь обновления.
Что я делал и чего не делал
Чтобы полностью прояснить, на чём основана проверка за моим письмом: я читал только файлы, которые
ваш сайт и так отдаёт каждому посетителю, а именно публичный файл readme.txt плагина, вашу
главную страницу и адреса файлов, указанные на этой странице. Я не обращался ни к панели
управления WordPress, ни к базе данных, ни к какой-либо закрытой части сайта.
В частности, я ни разу не отправлял вашу форму регистрации, не создавал учётную запись и не касался этапа автоматического входа. Ничего не было отправлено, протестировано или проэксплуатировано. Здесь это важнее, чем на большинстве подобных страниц, потому что регистрация и есть то самое действие, которого касается эта проблема, так что «я к этому не прикасался» и составляет всю разницу между раскрытием и вторжением.
Я также намеренно не публикую подробностей, которые помогли бы кому-то воспользоваться этой проблемой. Описание выше останавливается на уровне, нужном владельцу сайта, и я не даю ссылок ни на какой демонстрационный код.
Это наблюдение по версии: ваш сайт сообщает версию из затронутого диапазона. Это не утверждение, что ваш сайт был эксплуатируем на момент проверки. Поскольку проблема зависит от настройки, которую я не могу увидеть, сайт из этого диапазона вполне может быть вообще не уязвим, а также отдельно может быть защищён другими средствами, например межсетевым экраном веб-приложений или бэкпортированным исправлением.
У меня нет вебмастера / я не справляюсь
Если сайтом занимаетесь не вы, перешлите, пожалуйста, эту страницу тому, кто им занимается (вашему веб-разработчику, агентству или хостинг-провайдеру). Шаги выше он узнает сразу.
Если вы ведёте сайт сами и застряли, я с удовольствием бесплатно подскажу вам направление. Напишите по контактам ниже.
Контакты
Evan Harris, исследователь безопасности
- Эл. почта: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
Я обращаюсь по таким вопросам исключительно ради того, чтобы помочь операторам защитить свои сайты. Если вы предпочитаете больше не получать от меня писем, просто сообщите, и я это учту.
Источники
Официальные бюллетени и отслеживание
Разработчик / плагин
</content> </invoke>