Целые числа

В компьютерных науках целое число — это данные интегрального типа данных, тип данных, представляющий некоторый диапазон математических целых чисел. Целочисленные типы данных могут иметь разный размер и могут содержать или не содержать отрицательные значения. Целые числа обычно представляются в компьютере как группа двоичных цифр (битов). Размер группы различается, поэтому набор доступных целочисленных размеров различается для разных типов компьютеров. Компьютерное оборудование, включая виртуальные машины, почти всегда обеспечивает способ представления регистра процессора или адреса памяти в виде целого числа.

Целые числа — это просто области памяти, поскольку нам также нужно хранить отрицательные числа, используя только двоичные числа, мы должны использовать старший значащий бит (MSB) переменной для определения знака. Если MSB равен 1, это отрицательно, если 0, то положительно.

Целочисленные типы

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

Что такое целочисленное переполнение?

Целочисленное переполнение — это состояние, возникающее, когда результат арифметической операции превышает максимальный размер целочисленного типа, используемого для его хранения.

Давайте возьмем приведенную выше таблицу C в качестве примера, максимальное значение для int равно 2 147 483 647, поэтому, если значение больше 2 147 483 647, произойдет ошибка сегментации.

Что такое целочисленное недополнение?

Integer Underflow — это состояние, которое возникает, когда результат арифметической операции меньше минимального размера целочисленного типа, используемого для его хранения.

Влияние на безопасность

Воздействие специфично для используемого двоичного файла. Целочисленное переполнение и потеря значимости сами по себе не приводят к выполнению произвольного кода, но они могут привести к условиям переполнения стека или кучи, что может привести к выполнению произвольного кода.

Это хороший пример удаленного эксплойта целочисленного переполнения, я предлагаю вам потратить время, чтобы прочитать запись и другие подобные проблемы…



Другие примеры воздействия могут включать:

  • электронной коммерции, при расчете цены может использоваться целочисленное переполнение для изменения общего значения с положительного на отрицательное, что приводит к кредиту счета для злоумышленника и доставке украденных товаров.
  • Снятие 1 доллара со счета с нулевым балансом может привести к целочисленному недостатку и привести к новому балансу в размере 4 294 967 295.
  • Очень большое положительное число в банковском переводе может быть преобразовано серверной системой в целое число со знаком. В таком случае интерпретируемое значение может стать отрицательным числом и обратить поток денег — со счета жертвы на счет злоумышленника.