Программное обеспечение OpenReception для записи на прием предоставляет платформу для записи на прием со сквозным шифрованием. Версии до 1.0.2 не ограничивают неудачные попытки входа в систему с использованием парольной фразы. Злоумышленник может отправлять неограниченное количество неправильных паролей на любой известный адрес электронной почты, ограниченный только стоимостью проверки Argon2 (около 100 миллисекунд на попытку на тестируемом хосте, что дает 10 устойчивых попыток в секунду).
Тот же бэкэнд реализует рабочее регулирование для каждой учетной записи на конечной точке вызова WebAuthn, которое возвращает HTTP 429 примерно после 19 попыток. Ветка парольной фразы просто не вызывает это регулирование, оставляя поддерживаемый путь входа в систему с высокой ценностью незащищенным от подстановки учетных данных и атак по словарю. Асимметрия подтверждает, что это скорее недосмотр, чем дизайнерский выбор.
Инфраструктура регулирования существует, подключена к тому же серверу аутентификации и работает по пути WebAuthn. Ветка парольной фразы в `/api/auth/login` не была обновлена для записи неудачных попыток. В сочетании с политикой минимального использования парольной фразы приложения (12 символов, без энтропии или проверки словаря), учетные записи, использующие общие базовые шаблоны, такие как `Spring2026!XX` или слова из корпуса утечек, реально доступны за несколько дней на одном процессоре или часов на небольшой ферме графических процессоров.
Версия 1.0.2 исправляет проблему.
Показать оригинальное описание (EN)
OpenReception's appointment booking software provides an end-to-end encrypted appointment booking platform. Versions prior to 1.0.2 don't throttle failed passphrase login attempts. An attacker can submit unlimited wrong passphrase guesses against any known email address, capped only by the Argon2 verification cost (about 100 milliseconds per attempt on the tested host, giving 10 attempts per second sustained). The same backend implements a working per-account throttle on the WebAuthn challenge endpoint, which returns HTTP 429 after roughly 19 attempts. The passphrase branch simply does not invoke that throttle, leaving a supported high-value login path unprotected against credential stuffing and dictionary attacks. The asymmetry confirms this is an oversight rather than a design choice. The throttle infrastructure exists, is wired into the same auth backend, and works on the WebAuthn path. The passphrase branch in `/api/auth/login` was not updated to record failed attempts. Combined with the application's minimum-passphrase policy (12 characters, no entropy or dictionary checks), accounts using common base patterns such as `Spring2026!XX` or words from a leak corpus are realistically reachable in days on a single CPU, hours on a small GPU farm. Version 1.0.2 patches the issue.
Характеристики атаки
Последствия
Строка CVSS v3.1