Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 544

Целочисленный underflow

Что такое Целочисленный underflow?

Целочисленный underflowАрифметический дефект (CWE-191): вычитание ниже нуля у беззнакового значения «перекручивается» в огромное число, что ведёт к избыточным аллокациям или выходу за буфер.


Целочисленный underflow возникает, когда беззнаковое целое уменьшается ниже нуля или знаковая арифметика пересекает INT_MIN, и результат «оборачивается» в очень большое положительное число. Классический шаблон — len = header_len - prefix_len с подконтрольным атакующему prefix_len: получившееся огромное len обходит проверки границ и приводит к переполнению кучи или стека и OOB-чтениям. Реальные примеры — CVE-2018-1000005 (libcurl) и многочисленные сетевые ошибки ядра, где size_t-арифметика по длинам пакетов уходит в underflow. Меры: знаковая арифметика с явными сравнениями, проверяемое вычитание (__builtin_sub_overflow, std::safe_int), языковые ловушки переполнения (Rust debug, Swift), фаззинг с UBSan и строгая валидация ввода.

Примеры

  1. 01

    len = total - header_len превращается в 0xFFFFFFFF при total < header_len и используется как размер memcpy.

  2. 02

    Linux CVE-2019-11815: вычитание оставшейся длины уходит в underflow и приводит к UAF.

Частые вопросы

Что такое Целочисленный underflow?

Арифметический дефект (CWE-191): вычитание ниже нуля у беззнакового значения «перекручивается» в огромное число, что ведёт к избыточным аллокациям или выходу за буфер. Относится к категории Атаки и угрозы в кибербезопасности.

Что означает Целочисленный underflow?

Арифметический дефект (CWE-191): вычитание ниже нуля у беззнакового значения «перекручивается» в огромное число, что ведёт к избыточным аллокациям или выходу за буфер.

Как работает Целочисленный underflow?

Целочисленный underflow возникает, когда беззнаковое целое уменьшается ниже нуля или знаковая арифметика пересекает INT_MIN, и результат «оборачивается» в очень большое положительное число. Классический шаблон — len = header_len - prefix_len с подконтрольным атакующему prefix_len: получившееся огромное len обходит проверки границ и приводит к переполнению кучи или стека и OOB-чтениям. Реальные примеры — CVE-2018-1000005 (libcurl) и многочисленные сетевые ошибки ядра, где size_t-арифметика по длинам пакетов уходит в underflow. Меры: знаковая арифметика с явными сравнениями, проверяемое вычитание (__builtin_sub_overflow, std::safe_int), языковые ловушки переполнения (Rust debug, Swift), фаззинг с UBSan и строгая валидация ввода.

Как защититься от Целочисленный underflow?

Защита от Целочисленный underflow обычно сочетает технические меры и операционные практики, как описано в определении выше.

Какие есть другие названия Целочисленный underflow?

Распространённые альтернативные названия: Беззнаковый underflow, CWE-191.

Связанные термины