Уведомление о безопасности Blog Floating Button
Если вы получили от меня письмо со ссылкой на эту страницу, значит ваш сайт, по всей
видимости, использует версию плагина 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 (главный источник):
- Войдите в консоль WordPress (обычно
вашдомен.ru/wp-admin). - Перейдите в Плагины, затем Установленные плагины.
- Найдите 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, предварительно сделав резервную копию.
- Сделайте резервную копию сайта (файлы и база данных), прежде чем что-либо менять. Большинство хостинг-провайдеров предлагают резервное копирование в один клик, либо воспользуйтесь плагином резервного копирования для WordPress.
- В панели управления WordPress перейдите в Консоль, затем Обновления, либо в Плагины, затем Установленные плагины. Если обновление Blog Floating Button есть в списке, установите его отсюда.
- Если вам удобнее командная строка, WP-CLI делает то же самое:
wp plugin update blog-floating-button. - Если обновление не появляется, последний выпуск можно взять напрямую со страницы плагина в каталоге WordPress.org, Blog Floating Button, и обновиться через Плагины, затем Добавить плагин, затем Загрузить плагин.
- После обновления подтвердите новый номер версии (1.4.21 или новее) описанными выше способами и проверьте, что ваша плавающая кнопка по-прежнему отображается и работает как обычно.
Раз уж вы этим занялись, стоит убедиться, что ядро WordPress и остальные ваши плагины тоже обновлены, поскольку тот же принцип относится ко всем.
После обновления
Обновление до 1.4.21 или новее закрывает проблему: экран отчёта теперь очищает каждое значение перед выводом, поэтому сохранённые данные отслеживания показываются как текст, а не воспринимаются как код.
Что могло уже произойти, если говорить аккуратно. Всё, что анонимный посетитель сохранил до вашего обновления, по-прежнему лежит в таблице отслеживания плагина, но что-либо оно могло сделать только в том случае, если кто-то из ваших администраторов действительно открыл отчёт по доступу, пока сайт работал на затронутой версии. Если этим экраном никто не пользовался, ничего и не могло выполниться. Обновление останавливает выполнение в будущем; оно не отменяет того, что уже выполнилось.
Если ваши администраторы регулярно пользуются этим отчётом или вы просто хотите подстраховаться, вот разумные и необременительные проверки:
- Просмотрите учётные записи администраторов. В панели управления WordPress перейдите в Пользователи, отфильтруйте по роли Администратор и убедитесь, что каждая запись в списке принадлежит человеку, у которого такой доступ действительно должен быть, и с тем адресом эл. почты, который у него должен быть.
- Просмотрите недавние изменения пользователей, настроек и содержимого вашего сайта на предмет всего, чего вы не узнаёте.
- Если что-то выглядит неправильно, разумным следующим шагом будет сброс паролей
администраторов, а перегенерация секретных ключей и «солей» WordPress в
wp-config.php(новые значения находятся в одном клике в официальном генераторе секретных ключей) разово завершит сеансы всех пользователей.
У меня нет никакой возможности узнать, произошло ли что-то на вашем сайте на самом деле, и я не смотрел. Это уведомление является мерой предосторожности, а не отчётом об инциденте.
Что я делал и чего не делал
Чтобы полностью прояснить, на чём основано моё письмо: я читал только публичные файлы,
которые ваш сайт и так отдаёт каждому посетителю, а именно публичный файл readme.txt
плагина и вашу главную страницу. Я не обращался ни к панели управления WordPress, ни к
базе данных, ни к какой-либо закрытой части сайта, и я никогда не открывал экран отчёта
вашего плагина, чего я в любом случае не смог бы сделать без учётной записи на вашем сайте.
В частности, я ни разу ничего не отправлял в функцию отслеживания плагина. Ничего не было отправлено, сохранено, протестировано или проэксплуатировано. Здесь это важнее, чем на большинстве подобных страниц, потому что функция отслеживания и есть то самое, чего касается эта проблема, так что «я к ней не прикасался» и составляет всю разницу между раскрытием и вторжением.
Я также намеренно не публикую подробностей, которые помогли бы кому-то воспользоваться этой проблемой. Описание выше останавливается на уровне, нужном владельцу сайта, и я не даю ссылок ни на какой демонстрационный код.
Это наблюдение по версии: ваш сайт сообщает версию старше 1.4.21. Сайт из этого диапазона может быть уже защищён иными средствами, например межсетевым экраном веб-приложений или перенесённым исправлением. Это уведомление не является утверждением, что ваш сайт был эксплуатируем на момент моей проверки.
У меня нет вебмастера / я не справляюсь
Если сайтом занимаетесь не вы, перешлите, пожалуйста, эту страницу тому, кто им занимается (вашему разработчику, агентству или хостинг-провайдеру). Шаги выше он узнает сразу.
Если вы ведёте сайт сами и застряли, я с удовольствием подскажу направление бесплатно. Напишите по контактам ниже.
Контакты
Evan Harris, исследователь безопасности
- Эл. почта: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
Я обращаюсь по таким вопросам исключительно ради того, чтобы помочь операторам защитить свои сайты. Если вы предпочитаете больше не получать от меня писем, просто сообщите, и я это учту.
Источники
Официальные бюллетени и отслеживание
Разработчик / плагин