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

CWE-400 · 4 079 записей

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

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

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

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

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

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

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

Уязвимый код

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));}

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

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

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

4 086 записей

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