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

CWE-400 · 3 675 записей

Неконтролируемое потребление ресурсов

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

Код, разбирающий вложенные структуры, не ограничивает глубину или размер. Небольшие входные данные могут привести к несоразмерной вычислительной нагрузке.

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

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

Уязвимый код

ts
function expand(node) {  return node.children.map(expand);}

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

ts
const MAX_DEPTH = 32;function expand(node, depth = 0) {  if (depth > MAX_DEPTH) throw new Error("слишком глубоко");  return node.children.map((c) => expand(c, depth + 1));}

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

  1. 01Задавайте в парсерах ограничения по глубине, длине и времени.
  2. 02Усекайте пользовательский ввод перед записью в журнал.
  3. 03Установите пороги оповещений по загрузке процессора и памяти.

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

3 677 записей

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