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

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

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

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

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

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

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

Уязвимый код

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

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

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

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

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

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

800 записей

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