Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2023-1430 — Ответственное раскрытие неисправленной уязвимости в FluentCRM от WPManageNinja | Kitploit
Инструменты/GitHubGitHub/karlemilnikka/cve-2023-1430
Аутентификация и авторизацияАнализ уязвимостейВеб-безопасностьСтатьи и ИсследованияНеправильная КонфигурацияОбучение и Образование
GitHubkarlemilnikka/cve-2023-1430

CVE-2023-1430

Ответственное раскрытие неисправленной уязвимости в FluentCRM от WPManageNinja

Репозиторий
12 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Обновление от 2023-06-12: Сниппет больше не нужен. WPManageNinja исправили уязвимость через два часа после публичного раскрытия (через 93 дня после сообщения).

Обновление от 2024-01-27: Связанная проблема с бессрочными хэш-значениями теперь полностью решена.

Ответственное раскрытие неисправленной уязвимости CVE-2023-1430 в FluentCRM от WPManageNinja

Кратко: Злоумышленники могут просматривать и редактировать данные контактов в FluentCRM. WPManageNinja не исправили уязвимость в течение 90-дневного срока ответственного раскрытия. Я предоставляю сниппет для смягчения уязвимости в ожидании официального патча.

  • Уязвимость: CVE-2023-1430 Недостаточное использование хэша в качестве контроля авторизации
  • CVSS: 6.5 (Средний)
  • Программное обеспечение: FluentCRM
  • Затронутые версии: уязвимость обнаружена в 2.7.40
  • Исправленная версия: 2.8.02
  • Разработчик: WPManageNinja
  • Исследователь: Karl Emil Nikka, Nikka Systems (сообщено через Wordfence)
  • Дата публикации: 2023-06-12
  • Последнее обновление: 2023-06-12

Обзор

Сегодня я публикую информацию об уязвимости, которую я обнаружил в популярном плагине WordPress FluentCRM от WPManageNinja. Уязвимость, CVE-2023-1430, вызвана недостаточным использованием хэша адреса электронной почты в качестве контроля авторизации в FluentCRM. Я ответственно раскрыл уязвимость в соответствии с политикой раскрытия уязвимостей Google Zero. WPManageNinja не предоставили патч в течение 90-дневного окна и не запросили продления срока.

В этом отчете под контактом понимается объект контакта FluentCRM, а под пользователем — объект пользователя WordPress. Контакт может быть связан с пользователем, но это не обязательно. Подробности эксплуатации уязвимости не раскрываются до появления официального патча. Специалисты по безопасности могут связаться со мной для получения полного отчета ([email protected]).

Общее влияние и необходимые действия

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

FluentCRM установлен на более чем 30 000 сайтов. Администраторы сайтов с FluentCRM могут предотвратить эксплуатацию уязвимости, добавив мой сниппет для смягчения в файл functions.php дочерней темы.

Сниппет не исправляет уязвимость. Он заменяет уязвимый контент на странице отписки (unsubscribe.php) и странице управления предпочтениями (manage_subscription.php) FluentCRM на сообщение об ошибке, предлагающее контакту связаться по электронной почте. Адрес электронной почты в сообщении об ошибке — это адрес администратора сайта (его можно изменить в сниппете). Сниппет также гарантирует, что неавторизованные посетители не смогут отобразить уязвимый шорткод FluentCRM для управления предпочтениями (fluentcrm_pref). Вместо этого неавторизованный посетитель увидит сообщение об ошибке с предложением войти в систему. Все строки переводимы с помощью прилагаемого POT-файла.

Необходимые действия

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

  • сайты, где зарегистрированное имя контакта является конфиденциальной информацией;
  • сайты, где шорткод FluentCRM для управления предпочтениями присутствует или присутствовал на публичных страницах для неавторизованных посетителей;
  • сайты, где включено управление списками и название списков, на которые подписан контакт, является конфиденциальной информацией.

Назначенный контроллер данных сайта должен обрабатывать потенциальные утечки личных данных в соответствии с законами и нормативными актами соответствующих юрисдикций.

Дополнительное потенциальное влияние

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

Однако другие решения могут синхронизировать все метаданные от контактов к пользователям, например, WP Fusion и API FluentCRM. WP Fusion, вероятно, самый популярный сторонний плагин для синхронизации метаданных контактов между CRM (например, FluentCRM) и WordPress. К счастью, текущая версия WP Fusion не подключена к изменениям метаданных, инициированным из уязвимых форм. Я проинформировал разработчиков WP Fusion, и они не будут устранять это ограничение, пока WPManageNinja не исправят уязвимость.

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

Эксплуатация уязвимости

FluentCRM позволяет контактам отписываться и управлять предпочтениями на публичных веб-страницах. Ссылки на эти страницы включены в каждую рассылку. Изменения, внесенные на этих страницах, авторизуются с помощью MD5-хэшей адресов электронной почты контактов, передаваемых в качестве параметров URL. MD5-хэш адреса электронной почты не является секретом и может быть вычислен кем угодно. Злоумышленник может использовать неправильное использование хэшей для отписки конкретных контактов или массовой отписки контактов с известными адресами электронной почты.

В то время как страница отписки полагается исключительно на MD5-хэш для авторизации, страница управления предпочтениями требует дополнительный параметр URL под названием ce_id. В данном случае ce_id относится к ID контакта в таблице fc_subscribers. Этот ID представляет собой увеличивающееся целое число. Значение ce_id легко найти, перебрав все возможные значения (пространство поиска — это количество когда-либо зарегистрированных контактов сайта). Пользователи-администраторы, вероятно, имеют низкие значения.

Со страницы управления предпочтениями злоумышленник также может извлечь значение secure_hash контакта. При обновлении адреса электронной почты контакта значение его "secure_hash" сохраняется в cookie с именем fc_hash_secure. Имея этот cookie, злоумышленник может отобразить всю информацию о контакте, предоставляемую шорткодом формы предпочтений FluentCRM.

Связанная незначительная проблема: бессрочные хэш-значения

Ранее упомянутый "secure_hash" — это значение, на которое FluentCRM (в некоторых ситуациях) полагается вместо или как альтернативу MD5-хэшу адреса электронной почты. С момента выхода FluentCRM 2.8.0 страница отписки полагается исключительно на значение secure_hash для авторизации. Страница управления предпочтениями принимает как новое значение secure_hash, так и старый MD5-хэш адреса электронной почты для авторизации.

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

Я сообщил об этой связанной проблеме в WPManageNinja 2023-03-15. Два месяца спустя (2023-05-15) WPManageNinja ответили, что их консультанты по безопасности не считают статическое значение secure_hash проблемой. Консультанты WPManageNinja сказали, что "использовать такие одноразовые токены для идентификации контакта допустимо" и что это "похоже на API-токены SaaS-сервисов, которые не доставляются другим контактам, а отправляются только фактическому контакту, владеющему адресом электронной почты".

WPManageNinja были открыты и сказали мне сообщить, если я все еще считаю это проблемой безопасности, что я и сделал. Я объяснил, почему значения secure_hash нельзя сравнивать с API-токенами. (API-токены можно гарантированно передавать только через TLS-соединения, а доступ к API-токенам можно ограничить. Это не относится к значениям в открытом виде в электронных письмах. Самое главное, API-токены можно отозвать, в то время как у контакта нет возможности отозвать значение secure_hash.)

Позже в тот же день WPManageNinja поблагодарили меня и сказали, что они рассматривают возможность объединения ID записи электронной почты с хэшем. Это решит проблему, если будет реализовано вместе с автоматическим отзывом либо старых (с истечением по времени), либо предыдущих (с истечением по счетчику) значений secure_hash. Эта функция еще не реализована, но я не считаю использование статических хэш-значений частью этого CVE.

Временная шкала

  • 2023-03-11 Я сообщил об уязвимости в WPManageNinja. На тот момент я обнаружил уязвимость только на странице отписки.
  • 2023-03-13 WPManageNinja подтвердили получение моего отчета.
  • 2023-03-14 Разработчики WPManageNinja отрицали использование MD5-хэшей адресов электронной почты для авторизации, утверждая, что они используют токены wp_generate_uuid4.
  • 2023-03-14 Я объяснил и доказал, что они полагаются на MD5-хэши адресов электронной почты.
  • 2023-03-15 Из-за первоначального ответа WPManageNinja я копнул глубже и обнаружил ту же уязвимость на странице управления предпочтениями. Я сообщил о своих находках в WPManageNinja и объяснил, почему это делает уязвимость более серьезной. Я также отправил отчет в Wordfence и запросил CVE.
  • 2023-03-16 WPManageNinja подтвердили получение моего обновленного отчета.
  • 2023-03-16 Wordfence подтвердили уязвимость и присвоили ей CVE-2023-1430.
  • 2023-04-10 Я отправил 30-дневное напоминание в WPManageNinja.
  • 2023-04-14 WPManageNinja выпустили FluentCRM 2.8.0 без упоминания каких-либо исправлений безопасности (только "улучшения и исправления ошибок").
  • 2023-04-22 Я сообщил WPManageNinja, что обновление 2.8.0 исправило уязвимость только на странице отписки, и что она сохраняется на странице управления предпочтениями.
  • 2023-04-24 WPManageNinja подтвердили получение моего обновленного отчета.
  • 2023-05-14 Я отправил 60-дневное напоминание в WPManageNinja.
  • 2023-05-15 WPManageNinja сказали, что отправят мне исправленную бета-версию на следующей неделе (чего они так и не сделали).
  • 2023-06-01 Я спросил WPManageNinja, нужно ли мне предупредить разработчика WP Fusion до публичного раскрытия. WPManageNinja сказали, что не нужно, так как они выпустят обновление на следующей неделе (чего они не сделали).
  • 2023-06-08 Я сообщил WPManageNinja, что отложу публичное раскрытие до 2023-06-12, так как первоначальная дата публичного раскрытия была рядом с выходными.
  • 2023-06-09 Я сообщил WPManageNinja, что они достигли 90 дней, и следующим ответственным шагом будет публикация информации об уязвимости, чтобы все могли реализовать меры смягчения в ожидании патча. Я также попросил разработчиков WP Fusion не устранять ограничение синхронизации, пока WPManageNinja не исправят уязвимость.
  • 2023-06-09 Wordfence опубликовали первоначальные сведения об уязвимости, ошибочно указав, что уязвимость исправлена. Это произошло из-за недопонимания между мной и Wordfence.
  • 2023-06-12 Я опубликовал этот отчет, не раскрывая детали эксплуатации.
  • 2023-06-12 WPManageNinja исправили уязвимость через два часа после публичного раскрытия (через 93 дня после сообщения), не упомянув об уязвимости в своем журнале изменений (только "Использовать Secure Hash вместо MD5 для страницы предпочтений подписки").
  • 2023-06-12 Я обновил этот отчет, включив информацию о патче и ранее не раскрытые детали.

Nikka Systems Academy (Project Opal) НЕ ЗАТРОНУТА

В первом квартале 2023 года мы начали миграцию с предыдущего инструмента рассылок (Sendy) на FluentCRM. Я обнаружил уязвимость при интеграции FluentCRM с Nikka Systems Academy (Project Opal). Поскольку мы заменили систему управления подписками FluentCRM нашим собственным плагином, уязвимые формы FluentCRM никогда не влияли на наш сайт или данные наших клиентов.

Рекомендации для WPManageNinja

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

  • Им следует обратиться к стороннему аудитору для аудита текущей кодовой базы. Уязвимость CVE-2023-1430 — это классический пример того, как НЕ следует использовать хэши. В сочетании с первоначальным отрицанием WPManageNinja даже использования MD5-хэшей адресов электронной почты для авторизации это говорит мне о том, что, вероятно, пришло время для стороннего аудита кодовой базы.
  • Им следует опубликовать файл security.txt (RFC 9116), чтобы исследователи безопасности могли напрямую связаться с их разработчиками. Они упустили важные дни для смягчения, поскольку мне пришлось сообщать об уязвимости через их отдел поддержки клиентов, который первоначально и ошибочно отклонил отчет об уязвимости.
  • Им следует установить лучшую процедуру своевременного исправления уязвимостей. Такая легко исправляемая уязвимость должна быть устранена в течение 30 дней. Отсутствие патча в течение 90-дневного окна ответственного раскрытия неприемлемо.
  • Им всегда следует раскрывать устраненные уязвимости и реализованные улучшения безопасности в своих журналах изменений, чтобы их клиенты знали, насколько важны обновления.

Тем не менее, я все еще доверяю WPManageNinja. Ошибки есть во всех программах, и один неудачно обработанный отчет об уязвимости — не повод прекращать использование их плагинов.

Обновление от 2023-06-12: Тот факт, что они все еще пытались скрыть уязвимость в своем журнале изменений, вызывает у меня искреннее беспокойство. (Теперь они добавили CVE.)

Журнал изменений

  • 2023-06-12 Первоначальная публикация.
  • 2023-06-12 Обновлено информацией о доступности патча и ранее не раскрытыми деталями эксплуатации.
  • 2023-06-12 Добавлено во временную шкалу: WPManageNinja добавляют информацию о CVE в журнал изменений плагина.
  • 2023-06-12 Исправлены орфографические ошибки. CVSS повышен до 6.5 компанией Wordfence.
  • 2024-01-27 Добавлена информация о том, как FluentCRM 2.8.40 и 2.8.41 решили связанную незначительную проблему с бессрочными хэш-значениями.
Скачать инструмент
  • 2023-06-12 WPManageNinja добавили информацию о CVE в журнал изменений плагина.
  • 2024-01-17 WPManageNinja связались со мной, чтобы узнать мое мнение об их решении проблемы с бессрочными хэш-значениями.
  • 2024-01-27 WPManageNinja выпустили FluentCRM 2.8.40, решив проблему с бессрочными хэш-значениями с реализованными мной предложенными улучшениями.
  • 2024-01-27 WPManageNinja выпустили FluentCRM 2.8.41, гарантируя, что старый хэш аутентификации контакта становится недействительным при смене пароля связанного пользователя WordPress.
  • 2024-01-27 Я счел связанную незначительную проблему с бессрочными хэш-значениями решенной.