CyberGlossary

Уязвимости

Целочисленное переполнение

Также известно как: Обёртка целого

Определение

Ошибка, при которой арифметическая операция даёт значение вне диапазона целочисленного типа, что приводит к опасным эффектам обёртки или усечения.

Целочисленные переполнения возникают, когда вычисления выходят за максимум (или минимум) целого типа, вызывая обёртку, смену знака или усечение. Это становится проблемой безопасности, когда некорректное значение далее используется как размер буфера, счётчик цикла, индекс массива или проверка авторизации, что часто приводит к переполнениям буфера, бесконечным циклам или обходу ограничений. Меры защиты — проверяемая арифметика (Rust checked_add, C23 ckd_*, флаг компилятора -ftrapv), шаблоны «расширить — затем сузить» с явной проверкой диапазона, выбор типов по данным и активный фаззинг. Многие критичные CVE в кодеках изображений, парсерах шрифтов и ядрах ОС начинаются с цепочек целочисленных переполнений.

Примеры

  • CVE-2002-0639 (OpenSSH challenge-response): целочисленное переполнение, ведущее к повреждению кучи.
  • CVE-2018-9568 (Android Wi-Fi): целочисленное переполнение в обработке 802.11-кадров.

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