Перейти к содержанию

Слабый JWT

Что такое JWT?

JSON Web Token (JWT) — распространенный стандарт аутентификации для безопасного обмена данными между такими ресурсами, как API.

Как и любой другой механизм аутентификации, JWT может быть подвержен компрометации со стороны злоумышленников. Компрометация JWT может привести к полному доступу злоумышленника к веб-приложению или API, что делает эту уязвимость особенно опасной.

Возможные уязвимости JWT и меры по их защите

Существует несколько способов, которыми злоумышленники могут воспользоваться для компрометации JWT:

  • Использование слабых алгоритмов шифрования: JWT может быть подписан с использованием слабого алгоритма шифрования, который легко взломать.

  • Подделка JWT: злоумышленник может подделать JWT, чтобы получить несанкционированный доступ к системе.

  • Утечка данных: JWT могут содержать конфиденциальную информацию о пользователях, такую как их идентификаторы или роли. Если эта информация будет скомпрометирована, злоумышленники могут использовать ее для проведения целевых атак или кражи личных данных.

  • Атаки типа «отказ в обслуживании»: Слабые JWT могут быть использованы для проведения атак типа “отказ в обслуживании”, когда злоумышленники создают большое количество запросов с поддельными или украденными токенами, что приводит к перегрузке системы и нарушению ее работы.

  • Нарушение целостности данных: Если JWT используются для передачи важных данных, таких как изменения состояния пользователя или транзакции, слабые механизмы защиты могут привести к их модификации или подделке, что может иметь серьезные последствия для целостности данных.

Для минимизации рисков, связанных со слабыми JWT, важно следовать практикам безопасности, таким как использование защищенных соединений для передачи токенов, ограничение времени жизни JWT, использование refresh tokens для обновления access tokens, а также тщательная проверка и санитизация полученных данных.
Вы можете воспользоваться рекомендациями из OWASP JSON Web Token Cheat Sheet.

Принцип работы триггера «Слабый JWT»

Вебмониторэкс обнаруживает слабые JWT в запросах, если нода имеет версию 4.4 или выше и включен триггер Слабый JWT.

JWT считается слабым, если:

• Он не зашифрован — поле alg имеет значение none или отсутствует.
• Подписан скомпрометированным секретным ключом.

Если в значительном количестве входящих запросов обнаружены слабые JWT, регистрировать соответствующую уязвимость.

В новых аккаунтах компаний этот триггер включен по умолчанию. Вы можете выполнить все доступные действия с триггером: изменить, отключить, удалить или скопировать.

Example for trigger on weak JWTs

Пример триггера на обнаружение слабых JWT

Вы можете подписать JWT скомпрометированным ключом и использовать полученный JWT в запросах.

Пример JWT, подписанного скомпрометированным ключом:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJyb2xlIjoiQWRtaW5pc3RyYXRvciJ9.p5DrumkF6oTBiUmdtDRT5YHqYL2D7p5YOp6quUrULYg

При обнаружении в трафике значительного количества запросов с приведенным JWT Вебмониторэкс зарегистрирует уязвимость JWT, например:

JWT vuln example


Создание триггера →
Отключение и удаление триггеров →