Статьи ⇒ Java ⇒ Защита скриптов от целочисленного переполнения

Защита скриптов от целочисленного переполнения

Опубликовано: 28 окт 2012 в 19:32
Автор: freeeeez  

Целочисленные переполнения (Integer Overflows) является видом атак на веб-приложения, которые используют в своем коде арифметические операции над числами. Они возникают в результате сложения или умножения, когда результат операции превышает максимально-возможное значение целого типа, используемого для хранения. В результате происходит возврат "обратному" значению числа. Например, при использовании 8-разрядного числа его максимальное значение 127, а минимальное -128. В результате сложения 127 и 1 получиться число 128, которое превышает максимальное значение и оно будет обращено в первое минимальное -128. 

Атаки типа целочисленного переполнения могут быть использованы для:

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

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

Основными методами защиты от целочисленного переполнения являются проверка типа переменных и проверка арифметических операций. Для примера, если A+B всегда положительное, то проверка на &rt;0 будет лучшим решением. Если бы вы писали программу на Assembler, то вычисление переполнения было бы довольно простым делом - нужно было просто проверить флаг переполнения.

Однако, если бы все было так просто, то подбных взломов бы не происходило. В некоторых случаях возникают проблемы с проверкой переменных. В данных случаях необходимо пользоваться библиотекой SafeInt

Тэги: 
Нет комментариев
2 625 просмотров


Оставить комментарий:

Имя:
Email:
Сайт:
Комментарий:

Допустимые теги: <em> • <strong> • <u> • <sub> • <sup> • <blockquote>

Проверочный код:

Введите проверочный код, для подтверждения, что вы не робот.
P.S. Если вы робот, то, к сожалению, вы
не сможете прочитать символы с картинки.