В популярном open-source-решении для планирования встреч Cal.com обнаружена критическая уязвимость, позволяющая злоумышленникам получать несанкционированный доступ к учетным записям пользователей. Проблема, получившая идентификатор CVE-2025-66489, связана с ошибкой в логике проверки учетных данных. Уязвимости присвоена критическая оценка 9.3 по шкале CVSS v4. Затронуты все версии программного обеспечения до 5.9.7 включительно. Разработчики устранили угрозу в обновлении 5.9.8, установку которого рекомендуется выполнить немедленно.
Детали уязвимости
Уязвимость относится к типу обхода аутентификации (Authentication Bypass) из-за некорректной реализации алгоритма проверки подлинности (CWE-303). Её источник находится в функции "authorize()" внутри файла "packages/features/auth/lib/next-auth-options.ts". Конкретно, проблема кроется в ошибочной условной логике, которая пропускает проверку пароля, если в запросе предоставлен код двухфакторной аутентификации TOTP (Time-based One-Time Password). При этом валидность самого TOTP-кода в данном сценарии не имеет значения для обхода пароля.
Эксперты выделяют два основных вектора атаки. Во-первых, злоумышленник может полностью обойти как проверку пароля, так и верификацию TOTP. Для этого атакующему достаточно отправить любой непустой код в поле "totpCode", указав при этом email-адрес жертвы. Следовательно, большинство пользователей Cal.com, не включивших двухфакторную аутентификацию (2FA), оказываются уязвимы для относительно простого захвата аккаунта.
Во-вторых, уязвимость затрагивает и пользователей с активированной 2FA, хотя и в меньшей степени. Когда система получает TOTP-код, она полностью пропускает этап проверки пароля и валидирует только одноразовый код. Таким образом, многофакторная аутентификация фактически сводится к однофакторной, что ослабляет защиту тех аккаунтов, которые должны быть лучше защищены.
Техническая ошибка происходит в строках 179-187 проблемного файла. Код проверяет, имеет ли пользователь хеш пароля и был ли предоставлен TOTP-код. Если поле "totpCode" в запросе присутствует, условное выражение оценивается как ложное, что приводит к пропуску вызова функции "verifyPassword". В результате процесс аутентификации продолжается без должной проверки учетных данных, открывая путь для несанкционированного доступа.
Эта уязвимость представляет серьёзную угрозу для пользователей Cal.com. Потенциально под угрозой оказываются конфиденциальные данные: календари, ссылки на встречи и персональная информация. Злоумышленники могут использовать эту проблему для перебора пользователей, подмены личности (impersonation) и получения доступа к привилегированным учётным записям.
Проблема была обнаружена и сообщена разработчикам независимым исследователем в области безопасности Jaydns. В ответ команда Cal.com оперативно выпустила исправление в версии 5.9.8. Патч обеспечивает корректную последовательную проверку как пароля, так и TOTP-кода в процессе аутентификации, восстанавливая штатную и безопасную работу многофакторной защиты. Организациям и частным пользователям, использующим уязвимые версии, настоятельно рекомендуется немедленно обновиться до защищённого релиза во избежание потенциальных инцидентов.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2025-66489
- https://github.com/calcom/cal.com/security/advisories/GHSA-9r3w-4j8q-pw98