 Buffer Overflows are one of the flashiest forms of hacking, mostly because they are the root of a lot of the higher profile attacks that you see in the movies. However, real Buffer Overflow attacks require a great deal of effort to find exploitable servers and create exploits. A Buffer Overflow is a temporary data storage area that has a limited space allocated for any single task. To work with this design, programs should be written with error checking. Error checking is the process of verifying that buffers will receive the right type and the right amount of data. Failure to validate correct error checking procedures could result in weak security. Picture a bucket. A bucket can only hold a certain amount of water. As the bucket starts to fill, water begins to pour over the sides and onto whatever surrounds the bucket, getting everything wet. Similarly, a Buffer Overflow occurs when input given to an application exceeds the allotted Buffer memory. The input is still accepted and it overwrites other critical data. The input could either be direct interaction or receiving a data file. It could also be a remote request that is supported on an open network service port. Basically, anytime data has to be processed, there has to be enough memory for the processing to happen and proper instructions need to be present to handle the processing. Buffer Overflows could be used to crash or cause erratic behavior in a program, provide incorrect results, and to create security breaches that could result in data being misinterpreted as instructions and executed. Because of infrequent patching, critical SCADA systems have been targeted by hackers utilizing Buffer Overflows. Since SCADA systems are often found in critical manufacturing, this could be quite harmful to our country's critical infrastructure. The simplest way to prevent Buffer Overflow is not to allow more data to come in once the Buffer is full. Boundary protection can stop the data after a Buffer feels. However, just saying that oversimplifies the process. Stopping Buffer Overflows requires near-constant monitoring as systems are updated and new services are added. Moreover, some argue that Buffer Overflows can never be prevented. By their nature, some programming languages are limited in handling the Buffer and can lead to risks. For example, C-Programming, C and C++, is especially vulnerable to Buffer Overflows. C-Programming has functions that do not effectively check for boundaries. Buffer Overflows are difficult to monitor and can have a huge impact on software and web applications. Being proactive about Buffer Overflow prevention and patching outdated systems infrastructure can go a long way to keep services protected.