Версии Punk до 0.18 для Perl допускают подделку файлов cookie сеанса с помощью пустого ключа HMAC по умолчанию, когда сеанс объявлен без секрета. Ключевое слово сеанса закрепляет свои параметры в приложении, как указано: оно не требует секрета, предупреждения или отказа в запуске, когда он отсутствует. При чтении файла cookie и обратной записи по умолчанию для этого ключа используется пустая строка, поэтому объявление без секретного параметра или с неопределенным или пустым параметром подписывается и проверяется ключом HMAC-SHA256 нулевой длины.
Злоумышленник, знающий формат файлов cookie, может затем создать один из них в автономном режиме, содержащий любое содержимое сеанса, например идентификатор пользователя или роль. Ничто не указывает на неправильную конфигурацию во время выполнения: файлы cookie имеют правильный формат, а сеансы проходят туда и обратно, как и ожидалось.
Показать оригинальное описание (EN)
Punk versions before 0.18 for Perl allow session cookie forgery via an empty default HMAC key when a session is declared without a secret. The session keyword freezes its options onto the application as given: it does not require a secret, warn, or refuse to start when one is absent. The cookie read and the write-back both default that key to the empty string, so a declaration with no secret option, or with an undefined or empty one, signs and verifies with a zero-length HMAC-SHA256 key. An attacker who knows the cookie format can then mint one offline carrying any contents the session holds, such as a user identifier or a role. Nothing marks the misconfiguration at runtime: cookies are well formed and sessions round-trip as expected.
Характеристики атаки
Последствия
Строка CVSS v3.1