В системе управления пользовательским опытом Formbricks обнаружена критическая уязвимость, позволяющая злоумышленникам несанкционированно сбрасывать пароли любых учетных записей. Опубликованная три дня назад в консультативном бюллетене GHSA-7229-q9pv-j6p4 разработчиком mattinannt, ошибка связана с отсутствием проверки подписи JWT в версиях Formbricks до 4.0.1.
Детали уязимости
Уязвимость, получившая идентификатор CVE-2025-59934, оценивается как критическая с базовым показателем CVSS v3.1 9.8 баллов. Основная проблема заключается в том, что процедура проверки токенов декодирует полезную нагрузку JWT без верификации подписи, срока действия, эмитента или аудитории. Это позволяет злоумышленникам, узнавшим внутренний идентификатор пользователя, создавать поддельные токены и принудительно сбрасывать пароли, что создает серьезные риски для конфиденциальности и целостности данных.
Технический анализ показывает, что функция verifyToken в файле apps/web/lib/jwt.ts использует jwt.decode вместо jwt.verify. Такой подход позволяет создавать токены с заголовком alg: "none" и произвольными полезными нагрузками, содержащими любой идентификатор пользователя. Для эксплуатации уязвимости злоумышленнику достаточно получить идентификатор жертвы и создать токен без подписи, после чего посетить эндпоинт /auth/forgot-password/reset с поддельным JWT для установки нового пароля.
Особую опасность представляет тот факт, что уязвимость затрагивает как процесс сброса пароля, так и верификацию электронной почты, предоставляя злоумышленникам доступ на сетевом уровне для изменения учетных данных. Для успешной атаки не требуются специальные привилегии или взаимодействие с пользователем, что значительно повышает потенциальный ущерб.
Разработчики Formbricks уже выпустили версию 4.0.1, устраняющую проблему. Исправление заменяет jwt.decode на jwt.verify с обязательной проверкой подписи, срока действия, эмитента и аудитории. Пользователям рекомендуется немедленно обновить систему через команду npm install formbricks@^4.0.1.
Данный инцидент подчеркивает важность комплексной проверки JWT в веб-приложениях. Без полноценной верификации подписи и утверждений даже незначительные упущения в реализации могут привести к полному компрометированию систем аутентификации. Разработчикам, интегрирующим Formbricks в свои приложения, следует убедиться, что все операции на основе JWT используют jwt.verify с соответствующими секретными ключами и параметрами валидации.
Критический характер уязвимости и простота ее эксплуатации требуют незамедлительных действий от всех пользователей Formbricks. Промедление с обновлением до версии 4.0.1 может привести к массовым несанкционированным доступам и утечке конфиденциальной информации. Регулярный аудит безопасности и своевременное применение исправлений остаются ключевыми элементами защиты современных веб-приложений.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2025-59934
- https://nvd.nist.gov/vuln/detail/CVE-2025-59934
- https://github.com/formbricks/formbricks/security/advisories/GHSA-7229-q9pv-j6p4
- https://github.com/formbricks/formbricks/pull/6596
- https://github.com/formbricks/formbricks/commit/eb1349f205189d5b2d4a95ec42245ca98cf68c82
- https://github.com/formbricks/formbricks/blob/843110b0d6c37b5c0da54291616f84c91c55c4fc/apps/web/lib/jwt.ts#L114-L117