Pterodactyl — это бесплатная панель управления игровым сервером с открытым исходным кодом. С 1.7.0 по 1.13.0 ограничитель скорости аутентификации, определенный в RouteServiceProvider::configureRateLimiting(), применял один глобальный сегмент к конечным точкам входа в систему и двухфакторной контрольной точки вместо ключа по IP или учетной записи: сквозной лимит Limit::perMinute(10), охватывающий POST /auth/login и POST /auth/login/checkpoint опущен ->by(), поэтому Laravel получил постоянный ключ кэша (md5('аутентификация')) разделяемый каждым запросом. Неаутентифицированный злоумышленник, отправляющий примерно десять запросов в минуту с одного IP-адреса, самый дешевый вариант — на конечную точку контрольной точки (которая не имеет reCAPTCHA), исчерпывает общий счетчик и вызывает HTTP 429 для каждого пользователя, пытающегося войти в систему или пройти двухфакторную аутентификацию, отказ в обслуживании аутентификации на всей панели, который также блокирует администраторов.
Эта проблема исправлена в версии 1.13.0.
Показать оригинальное описание (EN)
Pterodactyl is a free, open-source game server management panel. From 1.7.0 until 1.13.0, the authentication rate limiter defined in RouteServiceProvider::configureRateLimiting() applied a single global bucket to the login and two-factor checkpoint endpoints instead of keying by IP or account: the fall-through Limit::perMinute(10) covering POST /auth/login and POST /auth/login/checkpoint omitted ->by(), so Laravel derived a constant cache key (md5('authentication')) shared by every request. An unauthenticated attacker sending roughly ten requests per minute from a single IP, most cheaply against the checkpoint endpoint (which has no reCAPTCHA), exhausts the shared counter and causes HTTP 429 for every user attempting to log in or complete two-factor authentication, a panel-wide authentication denial of service that also locks out administrators. This issue is fixed in version 1.13.0.
Характеристики атаки
Последствия
Строка CVSS v3.1