Most security vulnerabilities are software bugs—in the strict sense of the word. And most of these bugs would be considered innocuous, perhaps in an environment where people aren't trying to break the program. But then, we come to the Internet.

The most famous class of such bugs is the buffer overflow, by now the kind of term that makes it into your local paper when another Windows flaw makes the news. But in recent years a new type of vulnerability is being exploited more frequently: Integer manipulation bugs.

Not all integer manipulation bugs are integer overflows—some of them are underflows. Still, the class of error is usually referred to generically as overflows.

The basic problem is that integers in computers have a finite range. For instance, the rage of a signed 16-bit integer is -32767 to 32767.

What happens if arithmetic moves the value out of that range? The number could easily turn out to be massively larger or smaller than the expectation of the program's logic. Another example is a number that turns out to be negative instead of positive, changing the result of an "if (a

And then there are errors relating to the effects of integer promotion. When operations are made on integers of different sizes, say a short and a long, the smaller one is promoted temporarily to the larger size, and the result is potentially truncated back to the smaller size.

So what can go wrong just because a number is not what it should be? Some of those numbers are used for important stuff.

Source