c++buffer-overflowfortify-source

What is a buffer overflow and how do I cause one?


I have heard about a buffer overflow and I would like to know how to cause one.

Can someone show me a small buffer overflow example? New(And what they are used for?)


Solution

  • A buffer overflow is basically when a crafted section (or buffer) of memory is written outside of its intended bounds. If an attacker can manage to make this happen from outside of a program it can cause security problems as it could potentially allow them to manipulate arbitrary memory locations, although many modern operating systems protect against the worst cases of this.

    While both reading and writing outside of the intended bounds are generally considered a bad idea, the term "buffer overflow" is generally reserved for writing outside the bounds, as this can cause an attacker to easily modify the way your code runs. There is a good article on Wikipedia about buffer overflows and the various ways they can be used for exploits.

    In terms of how you could program one yourself, it would be a simple matter of:

    char a[4];
    strcpy(a,"a string longer than 4 characters"); // write past end of buffer (buffer overflow)
    printf("%s\n",a[6]); // read past end of buffer (also not a good idea)
    

    Whether that compiles and what happens when it runs would probably depend on your operating system and compiler.