Целочисленный 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 и строгая валидация ввода.
● Примеры
- 01
len = total - header_len превращается в 0xFFFFFFFF при total < header_len и используется как размер memcpy.
- 02
Linux CVE-2019-11815: вычитание оставшейся длины уходит в underflow и приводит к UAF.
● Частые вопросы
Что такое Целочисленный underflow?
Арифметический дефект (CWE-191): вычитание ниже нуля у беззнакового значения «перекручивается» в огромное число, что ведёт к избыточным аллокациям или выходу за буфер. Относится к категории Атаки и угрозы в кибербезопасности.
Что означает Целочисленный underflow?
Арифметический дефект (CWE-191): вычитание ниже нуля у беззнакового значения «перекручивается» в огромное число, что ведёт к избыточным аллокациям или выходу за буфер.
Как защититься от Целочисленный underflow?
Защита от Целочисленный underflow обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия Целочисленный underflow?
Распространённые альтернативные названия: Беззнаковый underflow, CWE-191.