USA India
Home Articles UserTV Press Releases Dictionary Books Education Careers B-Channels Resources Forums Blogs Classifieds
Friday 29 Aug, 2008 eNewsletter Register Login
Linux
Linux Home
Linux Advisor
Linux Articles
Software Vendors
Resources
User Groups
ISP Directory
Consultants Directory
Advertiser Directory
Case Studies/White papers
Tutorials
Seminars
Events
Links
Downloads
Forums
Linux
IMac
Useful Links
 
 
 
  February 2003

Security Advisor - Past Articles
Crying over spilled data
What are buffer overflows, and how can you protect yourself from them?

By Maggie Biggs

Perhaps you have seen an advertisement or observed in real life a small child attempting to pour a glass of milk from a very full container. Given the difficulty of controlling a full container of milk, more often than not, the youngster continues pouring the liquid until it fills the glass and then spills out onto the counter.


When you hear the term buffer overflow you might think of it as being roughly analogous to that milk that has spilled onto the counter. However, the after affects of a buffer overflow on your computer can be much trickier to clean up than that wet liquid on the counter.


So, what exactly is a buffer overflow and how can it affect computer security?


Simply put, a buffer overflow can happen when a software component or module tries to place more data into a temporary storage area (known as a buffer) than it was designed to hold. An overflow can occur when a piece of software accepts input or when two software modules are exchanging data. When too much data is received the information overflows the buffer for that component or module and then spills over into adjacent buffers, often corrupting valid data held in those other buffers.


Buffer overflows are not a new phenomenon. In fact, buffer overflows are, in large part, a by-product of the C programming language, which has been around since the 1970s. The C language is a good performer and many individuals and businesses choose to write software in this language because it is both fast and powerful.


The C language does have downsides, however. For one thing, it does not have some of the safety features found in other programming languages. References to arrays and pointers are not checked and many of the language's string variable operations are unsafe. Programmers have to write code that checks for and handles potential buffer overflows--not an easy task. The result is that often these exception-handling routines do not work right or the programmer omits them altogether given time constraints.


Other programming languages, such as Perl and Java, are less susceptible to buffer overflows because they dynamically allocate space for variable operations. However, programmers using these languages still need to check for potential buffer overflows, particularly if their Perl or Java code 'talks to' another piece of code that might be susceptible to buffer overflows.


Buffer overflows would then seem to be the result of sloppy programming. But, someone with the right expertise can also exploit buffer overflows to wreak havoc on your system.


When software runs on your computer, it uses a return address in memory to keep track of what it should do next. When a software component or module receives too much information and it spills over the existing buffer, it can also overwrite the return address with information that points it back to data or executable code that is housed in the incoming program variables.


Thus, a carefully crafted buffer overflow exploit will then execute instructions provided by the attacker rather than the program code you expect. The attackers replacement code could read or alter files on your system, start up remote access to your machine, connect your PC to another system where a Trojan horse can then be downloaded onto your computer, or any one of a host of other bad behaviors.


Major applications affected

Regardless of operating system and application, today attacks that take advantage of buffer overflows account for nearly half of all security vulnerabilities. Back in 1988, one of the first major buffer overflow exploits took advantage of the finger daemon on Unix to distribute a worm to almost 6,000 computer systems.


Today, with millions of computers now interconnected via the Internet, a single buffer overflow exploit can seriously damage both a large number of business computing machines as well as home users. For example, in 2000, a buffer overflow attack in Microsoft Outlook and Outlook Express made it possible for the attacker to execute whatever code they wished on the recipient's computer.


People receiving the message containing this buffer overflow did not even need to open the message or an attachment to activate it. Malicious code in the e-mail header launched the attack as soon as the message was downloaded from the e-mail server. This type of attack is very difficult to secure systems against. Microsoft was able to deliver a patch that eliminates this particular buffer overflow.


However, there are many other operating system services and existing applications, including Outlook and Outlook Express, that remain susceptible to various different kinds of buffer overflow attacks. And, using buffer overflows as an attack vehicle is not limited to just Microsoft-based technologies. You can become the victim of a buffer overflow attack regardless of whether you are using Macintosh, Solaris, Linux, Windows, or any other combination of operating system and applications. What's more, existing firewall technology cannot stop many types of buffer overflow attacks.

Writers of buffer overflow exploits do quite often target Microsoft technologies given the imbalance in the current computing market. With the majority of systems using Microsoft technologies, buffer overflow exploits that are targeted at these technologies can usually inflict the greatest damage. Were the marketplace to become more evenly balanced and competitive, you can be sure that attackers would find ways to use buffer overflows to their advantage regardless of the technology involved.


Copyright © 2001-2008 ComputerUser, Inc., All Rights Reserved
About us | Terms of use | Privacy Policy | Legal | Trademark/Copyright | Awards | Advertise | Writer guidelines | Sitemap | Contact | FAQ's | Feedback  | Link to us

Here are the topics we cover computer certification computer careers computer training computer games consulting data recovery data security digital entertainment emerging technology gadget reviews handheld computers hardware reviews home automation home networks home office how-to advice internet linux local companies local news local profiles macintosh mp3 players network security online music online security open-source small-business technology soho software reviews technology books technology dictionary vpn web site reviews wi-fi windows wireless technology tech articles tech news press releases tech dictionary education resources career solutions create your personal blog upload your videos become a writer usergroups special interest group SIG 3com cipts adobe adobe certified expert apc ncpi apple achds acpt acsa actc avaya bea 8.1 certified administrator 8.1 certified architect 8.1 certified developer 9 certified administrator bicsi rcdd checkpoint ccmse ccsa ccsa ngx ccse ccse ng plus with ai ccse ngx cisco access routing and lan switching ccda ccdp ccie ccip ccna ccnp ccnp old ccsp ccvp crmam ip communications optical proctored exams for validating knowledge sales specialist storage networking vpn and security wireless lan citrix cca 3.0 cca 4.0 cca 4.5 cca xp ccea 3.0 ccea 4.0 ccea xp ccia ciw ciw associate ciw certified instructor master ciw admin master ciw designer master ciw enterprise developer security analyst comptia a+ network+ security+ server+ computer associates ca cusa cuse cwna cwna cwsp dell eccouncil cea cep certified ethical hacker chfi e-commerce architect emc emc specialist implemenation technology foundations enterasys ese eta exam express exin exin itil extreme networks ena ens filemaker f7cd f8cd fortinet fortigate foundry cne fujitsu fujitsu guidance software ence hdi css hda hdm hdsa hitachi hitachi certified professional hp ais apc app aps ase certified systems developer csa cse master ase huawei hcne hyperion hcp ibm advanced deployment professional advanced technical expert application developer business process analyst certified administrator certified advanced system administrator certified advanced technical expert certified associate developer certified enterprise developer certified solution designer certified specialist certified systems expert database administrator db2 deployment professional enterprise developer eserver certified specialist ibm on demand business solution advisor solution designer solutions developer solutions expert storage administrator system administator iisfa cifi intel isaca cisa isc cissp sscp iseb itil ism cpm juniper jncia jncis legato lcaa lcea lotus clp lpi lpic level 1 lpic level 2 lpic level 3 macromedia mcafee mcdata csnd microsoft crm mbs mcad .net mcdba mcdst mcitp mcp mcpd mcsa longhorn mcsa 2003 mcsa 2008 mcsd .net mcse mcse 2000 security mcse 2000 to mcse 2003 upgrade mcse 2003 mcse 2003 messaging mcse 2003 security mcse 2008 mcts microsoft business solutions microsoft partner competency mile2 cnsa network appliance nac-na nac-nie naca nace nacp network general sniffer certified professional nokia nokia security administrator nortel ncde ncds ncse ncss ncts novell5 cna 5 cne 6 cna 6 cne 6.5 cne cne upgrade omg ocup oracle 10g dba 10g oca 11i 8i dba 9i dba 9i internet application developer oca ocp8 to ocp8i dba upgrade exam pmi project management professional polycom pcve redhat rhce rhct sair sas institute sas scp saas scp snia snia certified architect snia certified professional snia certified systems engineer snia storage networking certification program administrator professional associate symantec scse scsp scta scts teradata tca v2r5 tcad v2r5 tcda v2r5 tcis v2r5 tcm v2r5 tcp v2r5 tia ccnt ctp tibco tcp trusecure ticsa veritas infraguard chamber of commerce vcp vmware certified professional webex linkedin facebook myspace Professional page layout, image editing, vector illustration, and print production Website design, development, prototyping, and blogging Creation of rich interactive content Industry-standard visual effects and motion graphics Video capture, editing, and production; DVD titling; and digital audio, Adobe Photoshop CS3 extended, Adobe illustrator CS3,Adobe indesign CS3,Adobe Acrobat 8 Professional, Adobe Flash CS3 Professional, Adobe Dreamweaver CS3,Adobe Contribute CS3,Adobe Fireworks CS3,Adobe After Effects CS3 Professional, Adobe Premiere Pro CS3,Adobe Soundbooth CS3,Adobe Encore CS3,Adobe OnLocation,Adobe Bridge CS3,Adobe Version Cue CS3,Adobe Device Central CS3,Adobe Stock Photos, Intel Pentium 4 (1.4GHz processor for DV; 3.4GHz processor for HDV), Intel Centrino, Intel Xeon, (dual 2.8GHz processors for HD), or Intel Core, Duo (or compatible) processor; SSE2-enabled processor required for AMD systems Microsoft Windows XP with Service Pack 2 or Microsoft Windows Vista Home Premium, Business, Ultimate, or Enterprise (certified for 32-bit editions) 1GB of RAM for DV; 2GB of RAM for HDV and HD; more RAM recommended when running multiple components 10GB of available hard-disk space (additional free space required during installation) Dedicated 7,200 RPM hard drive for DV and HDV editing; striped disk array storage (RAID 0) for HD; SCSI disk subsystem preferred Microsoft DirectX compatible sound card (multichannel ASIO-compatible sound card recommended),1,280x1,024 monitor resolution with 32-bit color adapter Blu-ray burner required for Blu-ray Disc creation OHCI compatible IEEE 1394 port for DV and HDV capture, export to tape, and transmit to DV device QuickTime 7.1.2 software required to use QuickTime features Broadband Internet connection required for Adobe Stock Photos* and other services