Перейти к содержимому
Noroxi

CWE-347 · 898 записей

Некорректная проверка криптографической подписи

Почему это происходит?

Проверяющая сторона берёт алгоритм проверки из заголовка самого токена. В результате недоверенные данные сами задают правило своей проверки.

Как предотвратить

  1. 01Жёстко задавайте допустимый алгоритм на сервере.
  2. 02Обязательно проверяйте поля издателя (iss), получателя (aud) и срока действия (exp).
  3. 03Не смешивайте асимметричные и симметричные схемы проверки на одном эндпоинте.

Уязвимый и исправленный код

Показательный учебный пример. Выделенные строки показывают, где ошибка и где исправление.

Уязвимый код

ts
const claims = jwt.verify(token, publicKey);

Исправленный код

ts
const claims = jwt.verify(token, publicKey, {  algorithms: ["RS256"],  issuer: "https://id.example.com",  audience: "portal",});

Есть ли этот шаблон в вашем коде?

В рамках услуги «Пентест веб-приложений и API» мы целенаправленно ищем этот класс. Результаты передаются с указанием номеров строк.

CVE этого класса

902 записей

Все классы уязвимостей