Convoy — это панель управления KVM-сервером для хостингового бизнеса. Начиная с бета-версии 3.9.0 и до версии 4.5.1, метод JWTService::decode() не проверял криптографическую подпись токенов JWT. Хотя этот метод настроил симметричную подписывающую сторону HMAC-SHA256 через lcobucci/jwt, он проверял только утверждения на основе времени (exp, nbf, iat) с использованием ограничения StrictValidAt.
Ограничение SignedWith не было включено в этап проверки. Это означает, что злоумышленник может подделать или подделать полезную нагрузку токена JWT — например, изменить утверждение user_uuid — и токен будет принят как действительный, если требования, основанные на времени, будут удовлетворены. Это напрямую влияет на поток аутентификации SSO (LoginController::authorizeToken), позволяя злоумышленнику аутентифицироваться как любой пользователь, создав токен с произвольным user_uuid.
Эта проблема исправлена в версии 4.5.1.
Показать оригинальное описание (EN)
Convoy is a KVM server management panel for hosting businesses. From version 3.9.0-beta to before version 4.5.1, the JWTService::decode() method did not verify the cryptographic signature of JWT tokens. While the method configured a symmetric HMAC-SHA256 signer via lcobucci/jwt, it only validated time-based claims (exp, nbf, iat) using the StrictValidAt constraint. The SignedWith constraint was not included in the validation step. This means an attacker could forge or tamper with JWT token payloads — such as modifying the user_uuid claim — and the token would be accepted as valid, as long as the time-based claims were satisfied. This directly impacts the SSO authentication flow (LoginController::authorizeToken), allowing an attacker to authenticate as any user by crafting a token with an arbitrary user_uuid. This issue has been patched in version 4.5.1.
Характеристики атаки
Последствия
Строка CVSS v3.1