Integer Overflow
Uma das anomalias mais simples que talvez possa ser explorada é o Integer Overflow.
Quando um inteiro é somado muitas vezes, seu número pode ultrapassar sua capacidade de representação.
Por exemplo, um inteiro de 4 bytes pode representar do número -2147483648
ao 2147483647
. Se somarmos 1 a um inteiro de 4 bytes com valor 2147483647
, ele se tornará -2147483648
por causa da sua representação em complemento de 2 e esse comportamento é chamado de Integer Overflow. O comportamento oposto que acontece ao subtrair 1 de -2147483648
é chamado de Integer Underflow.
Uma forma de explorar esse comportamento é caso esse inteiro esteja sendo usado como um offset de alguma posição de memória ou uma expressão condicional (if). Fazendo um Integer Overflow, você pode ter acesso a uma posição de memória que o programa não permitia, ou ultrapassar alguma checagem de uma forma não pretendida.
Em geral, um Integer Overflow é uma vunerabilidade bem simples, e na maioria dos casos, não é possível explorar muito com ele. Mas uma forma de overflow bem mais perigosa que o Integer Overflow é o Buffer Overflow, que veremos a seguir.
Last updated