Если вы получили от меня письмо со ссылкой на эту страницу, значит ваш сайт, по всей видимости, использует версию плагина Blog Floating Button (плагин WordPress от sunhaengsa / kuma-chan, который лежит у вас в файлах по пути /wp-content/plugins/blog-floating-button/), попадающую в затронутый диапазон известной проблемы безопасности. На этой странице описано, в чём состоит проблема, как проверить, какая у вас версия, как обновиться и что делать после этого.

Проблема отслеживается как CVE-2026-15383: это хранимый межсайтовый скриптинг без аутентификации в функции отслеживания кликов и построения отчётов. Она затрагивает все выпуски до 1.4.21 и исправлена в 1.4.21, опубликованной 31 июля 2026 года. Если у вас установлено что-либо старше 1.4.21, обновите Blog Floating Button до 1.4.21 или новее.

Об одном моменте стоит сказать прямо, поскольку он отличает это уведомление от некоторых других, которые я рассылал: безопасной старой версии не существует. Это не та уязвимость, которая появилась в какой-то момент истории плагина, а затем была устранена. Отсутствующая защита присутствовала в каждом выпуске, который плагин когда-либо публиковал, вплоть до 1.4.20, поэтому довод «моя установка слишком старая, чтобы быть затронутой» здесь не работает. Не затронуты только версии 1.4.21 и новее.

Кроме того, это уведомление не зависит от того, как настроен ваш сайт. Нет никакой настройки, которую нужно было бы включить, чтобы затронутый код оказался на месте.

Это уязвимость плагина, а не ядра WordPress. Полностью обновлённый WordPress не защитит вас, если сам плагин Blog Floating Button остаётся на затронутой версии.

Это письмо настоящее?

Да. Это добросовестное уведомление в рамках ответственного раскрытия от независимого исследователя безопасности. Я не прошу у вас денег, паролей или доступа к сайту и не пытался в него проникнуть, что-либо ему отправить или что-либо эксплуатировать.

Я лишь посмотрел общедоступные файлы, которые ваш сайт отдаёт любому посетителю (так же, как публична ваша главная страница), и отметил номер версии, который публикует плагин. Я специально не отправлял ничего в функцию отслеживания этого плагина, и эта проверка никак не затрагивает ваши данные, вашу панель управления или какую-либо закрытую часть сайта (подробнее ниже, в разделе Что я делал и чего не делал).

Если вы хотите убедиться, кто я, контактные данные приведены внизу этой страницы и на странице Обо мне.

Почему это важно

Blog Floating Button добавляет к вашим записям и страницам плавающую кнопку и ведёт собственный учёт кликов и посещений, чтобы вы могли позже просмотреть их в отчёте по аналитике доступа внутри панели управления WordPress. Здесь задействованы обе половины этой функции.

В затронутых версиях плагин принимает данные отслеживания от кого угодно, без всякого входа в систему, и сохраняет часть того, что браузер посетителя сообщил о себе, в собственной таблице базы данных ровно в том виде, в каком получил, без какой-либо очистки. Позже, когда экран отчёта выводит эти сохранённые строки, он записывает их в страницу как есть. Следствие таково: текст, сохранённый анонимным посетителем, может быть воспринят как код при отображении отчёта.

Точности заслуживает вопрос о том, где именно этот код выполняется, и ответ не совпадает с тем, что подразумевает формулировка публичного бюллетеня. Экран отчёта находится в панели управления WordPress. Значит, код выполнится в браузере администратора, вошедшего в систему и открывшего отчёт по доступу, а не в браузерах ваших обычных посетителей. Если вы переживали, что через это атакуют людей, просматривающих ваш сайт: нет, не атакуют, и я предпочту сказать это прямо, чем оставить у вас более пугающее впечатление, чем позволяют факты.

Это же задаёт и масштаб происходящего. Это настоящая хранимая уязвимость без аутентификации, и исправить её стоит без промедления, но она уже, чем проблемы с захватом учётных записей и удалённым выполнением кода, о которых я пишу в других местах. Сама по себе она никому не выдаёт учётную запись администратора и сама по себе не даёт никому контроль над вашим сервером. Чтобы хоть что-то произошло, требуется, чтобы администратор открыл один конкретный экран.

Вместе с тем же выпуском приходит и второе исправление. В списке изменений 1.4.21 также отмечено, что была устранена уязвимость SQL-инъекции в параметрах поиска и фильтрации на экране отчёта. Отдельного бюллетеня или идентификатора CVE для неё, насколько я могу судить, не публиковалось, поэтому я не стану приписывать ей идентификатор; упоминаю я о ней потому, что обновление до 1.4.21 закрывает и её. Тот же выпуск дополнительно исправил проблему с выводом сообщений об ошибках, которая могла раскрывать пути к файлам на сервере, а разработчик провёл ревизию экранирования вывода и очистки ввода по всему плагину. Всё это означает следующее: 1.4.21 является выпуском безопасности, и его стоит установить, даже если основная проблема кажется вам не такой уж серьёзной.

Я описываю это на том уровне, который нужен владельцу сайта, чтобы действовать, и не глубже. Я не публикую подробностей, которые позволили бы кому-то это воспроизвести, и прошу вас не пробовать это ни на своём сайте, ни на чужом. Чтение номера вашей версии, как описано ниже, даёт всё необходимое, чтобы решить, что делать.

Если в моём письме упоминалась эта проблема, значит версия, о которой сообщает ваш сайт, старше 1.4.21. Я не проверял, эксплуатируем ли именно ваш сайт; всё, что я наблюдал, это версия.

Затронут ли я?

Всё сводится к одному вопросу: какая версия Blog Floating Button у вас установлена?

В панели управления WordPress (главный источник):

  1. Войдите в консоль WordPress (обычно вашдомен.ru/wp-admin).
  2. Перейдите в Плагины, затем Установленные плагины.
  3. Найдите Blog Floating Button, запись, папка которой называется blog-floating-button, и посмотрите версию, указанную под названием.

Из публичного манифеста (без входа): откройте в браузере вашдомен.ru/wp-content/plugins/blog-floating-button/readme.txt. Строка Stable tag: ближе к началу и есть версия, о которой сообщает ваша установка; именно этот публичный файл я и читал. У этого плагина она в точности совпадает с версией, показанной в панели управления, во всех опубликованных им выпусках.

Одна проверка для этого плагина не работает, поэтому, пожалуйста, на неё не полагайтесь. Если вы привыкли узнавать версии плагинов по числу в параметре ?ver=, добавленном к скрипту или таблице стилей в исходном коде страницы, здесь это введёт вас в заблуждение. Плагин не проставляет собственную версию в этих файлах, поэтому WordPress подставляет вместо неё версию ядра WordPress. Число вроде 6.8.5 или 7.0.1 рядом с файлом этого плагина является вашей версией WordPress, а не версией плагина, и сравнивать его с 1.4.21 бессмысленно. Используйте экран в панели управления или readme.txt.

Затем примените правило, учитывая, что версии сравниваются численно, а не по алфавиту, поэтому 1.4.21 новее, чем 1.4.9, хотя как текст выглядит меньше:

  • Всё, что старше 1.4.21: затронуто. Обновляйтесь. Нет такой границы, ниже которой более старый выпуск снова становится безопасным.
  • 1.4.21 или новее: уже исправлено.

Как обновиться

Плагин бесплатный, всё ещё публикуется и активно поддерживается, поэтому исправление устанавливается как обычное обновление. Самый безопасный путь: обновляться средствами самого WordPress, предварительно сделав резервную копию.

  1. Сделайте резервную копию сайта (файлы и база данных), прежде чем что-либо менять. Большинство хостинг-провайдеров предлагают резервное копирование в один клик, либо воспользуйтесь плагином резервного копирования для WordPress.
  2. В панели управления WordPress перейдите в Консоль, затем Обновления, либо в Плагины, затем Установленные плагины. Если обновление Blog Floating Button есть в списке, установите его отсюда.
  3. Если вам удобнее командная строка, WP-CLI делает то же самое: wp plugin update blog-floating-button.
  4. Если обновление не появляется, последний выпуск можно взять напрямую со страницы плагина в каталоге WordPress.org, Blog Floating Button, и обновиться через Плагины, затем Добавить плагин, затем Загрузить плагин.
  5. После обновления подтвердите новый номер версии (1.4.21 или новее) описанными выше способами и проверьте, что ваша плавающая кнопка по-прежнему отображается и работает как обычно.

Раз уж вы этим занялись, стоит убедиться, что ядро WordPress и остальные ваши плагины тоже обновлены, поскольку тот же принцип относится ко всем.

После обновления

Обновление до 1.4.21 или новее закрывает проблему: экран отчёта теперь очищает каждое значение перед выводом, поэтому сохранённые данные отслеживания показываются как текст, а не воспринимаются как код.

Что могло уже произойти, если говорить аккуратно. Всё, что анонимный посетитель сохранил до вашего обновления, по-прежнему лежит в таблице отслеживания плагина, но что-либо оно могло сделать только в том случае, если кто-то из ваших администраторов действительно открыл отчёт по доступу, пока сайт работал на затронутой версии. Если этим экраном никто не пользовался, ничего и не могло выполниться. Обновление останавливает выполнение в будущем; оно не отменяет того, что уже выполнилось.

Если ваши администраторы регулярно пользуются этим отчётом или вы просто хотите подстраховаться, вот разумные и необременительные проверки:

  • Просмотрите учётные записи администраторов. В панели управления WordPress перейдите в Пользователи, отфильтруйте по роли Администратор и убедитесь, что каждая запись в списке принадлежит человеку, у которого такой доступ действительно должен быть, и с тем адресом эл. почты, который у него должен быть.
  • Просмотрите недавние изменения пользователей, настроек и содержимого вашего сайта на предмет всего, чего вы не узнаёте.
  • Если что-то выглядит неправильно, разумным следующим шагом будет сброс паролей администраторов, а перегенерация секретных ключей и «солей» WordPress в wp-config.php (новые значения находятся в одном клике в официальном генераторе секретных ключей) разово завершит сеансы всех пользователей.

У меня нет никакой возможности узнать, произошло ли что-то на вашем сайте на самом деле, и я не смотрел. Это уведомление является мерой предосторожности, а не отчётом об инциденте.

Что я делал и чего не делал

Чтобы полностью прояснить, на чём основано моё письмо: я читал только публичные файлы, которые ваш сайт и так отдаёт каждому посетителю, а именно публичный файл readme.txt плагина и вашу главную страницу. Я не обращался ни к панели управления WordPress, ни к базе данных, ни к какой-либо закрытой части сайта, и я никогда не открывал экран отчёта вашего плагина, чего я в любом случае не смог бы сделать без учётной записи на вашем сайте.

В частности, я ни разу ничего не отправлял в функцию отслеживания плагина. Ничего не было отправлено, сохранено, протестировано или проэксплуатировано. Здесь это важнее, чем на большинстве подобных страниц, потому что функция отслеживания и есть то самое, чего касается эта проблема, так что «я к ней не прикасался» и составляет всю разницу между раскрытием и вторжением.

Я также намеренно не публикую подробностей, которые помогли бы кому-то воспользоваться этой проблемой. Описание выше останавливается на уровне, нужном владельцу сайта, и я не даю ссылок ни на какой демонстрационный код.

Это наблюдение по версии: ваш сайт сообщает версию старше 1.4.21. Сайт из этого диапазона может быть уже защищён иными средствами, например межсетевым экраном веб-приложений или перенесённым исправлением. Это уведомление не является утверждением, что ваш сайт был эксплуатируем на момент моей проверки.

У меня нет вебмастера / я не справляюсь

Если сайтом занимаетесь не вы, перешлите, пожалуйста, эту страницу тому, кто им занимается (вашему разработчику, агентству или хостинг-провайдеру). Шаги выше он узнает сразу.

Если вы ведёте сайт сами и застряли, я с удовольствием подскажу направление бесплатно. Напишите по контактам ниже.

Контакты

Evan Harris, исследователь безопасности

Я обращаюсь по таким вопросам исключительно ради того, чтобы помочь операторам защитить свои сайты. Если вы предпочитаете больше не получать от меня писем, просто сообщите, и я это учту.

Источники

Официальные бюллетени и отслеживание

Разработчик / плагин