Выбор ответа Senior Авторизация и безопасность API обновлено

Атака alg none

Вопрос

Тестировщик меняет в заголовке JWT "alg": "HS256" на "alg": "none", правит role на admin в payload и удаляет подпись. Сервер принял токен. Что это?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Критическая уязвимость: сервер обязан проверять подпись и алгоритм. Алгоритм none описан в стандарте JWT для случаев, когда целостность обеспечена иначе, но сервер API не должен его принимать.

Варианты ответа

  1. Критическая уязвимость: сервер обязан проверять подпись и алгоритмправильный ответ
  2. Нормальное поведение: алгоритм none разрешён стандартом JWT
  3. Баг клиента: он сформировал токен без подписи, сервер тут ни при чём
  4. Ошибка кодировки Base64URL, из-за которой подпись не распарсилась

Разбор

Алгоритм none описан в стандарте JWT для случаев, когда целостность обеспечена иначе, но сервер API не должен его принимать. Правильная реализация жёстко задаёт список алгоритмов и отвергает токен без подписи. Похожие проверки: подпись другим ключом, изменённый payload со старой подписью, токен другого окружения.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме