Playing silly buffers: How bad programming lets viruses in

Daily Newsletters

Sign up to ZDNet UK's daily newsletter.

ANALYSIS
One of the most prevalent types of attack on networked computers is the buffer overflow. Searching for such vulnerabilities in Microsoft's Knowledge Base returns many hundreds of examples -- it's the mechanism of choice for the discerning malware merchant. New hardware and software techniques are reducing the incidence of this perennial problem, but it's unlikely ever to go away completely.

So, what is a buffer and why does it overflow? In the simplest terms, a buffer is an area of memory used to pass data between different devices or parts of software. Sometimes a buffer can be a physical memory chip -- printers and video cards have dedicated buffers, where the processor sends the data to be output -- but most often it's a temporary area in system memory set aside by one piece of software exchanging data with another. It's this kind of buffer that comes under attack, and there are hundreds if not thousands of them created and destroyed constantly as you use any piece of software.

What looks to you like a single program, like Word, is in fact made up of many components, known as routines, each a tiny program in its own right doing a single job. In a word processor, for example, there may be something that colours a block of text, another that underlines it, and yet another that recognises a block of text as a valid URL. These can have many different uses, like automatically highlighting a URL as you type one into a document.

As you type, whenever a space is entered the previous word is passed to the URL detector. If that finds the word is in fact a valid address, then the word processor will invoke the block colour and block underline code, so the URL appears as such on screen. Of course, the same is-this-a-URL? piece of code can be used by lots of other programs, such as email, database, and even Web browsing software -- and each one that uses it must create and use a buffer in the same way.

All code running on a computer has access to an area of memory called the stack. The processor has various special instructions designed to handle the stack and its contents quickly and efficiently, including handling addresses within the stack much faster than just any old random location. It's also automatically transferred when one routine uses - calls - another one, so it's where buffers are built and filled.

The stack also automatically contains a return address: when one routine calls another, the second routine needs to know from whence it was called so it can hand control back. It's this use of the stack for both data and address information that makes buffer overflows such a tempting target. Often, the return address is very close to the buffer -- exactly how close depends on many things, but is usually the same for a particular routine.

Talkback

They go to see the plop!

via Facebook 20 January, 2004 13:10
Reply

Post your comment

In order to post a comment you need to be registered and logged in.

You can also log in with Facebook. Log in or create your ZDNet UK account below

  • Login

Will not be displayed with your comment

By signing up for this service, you indicate that you agree to our Terms and Conditions and have read and understood our Privacy Policy. Questions about membership? Find the answers in the Community FAQ

Get ZDNet UK's daily newsletter

Enter your email address to sign up

ZDNet UK Live

Marg Menzies Harrison

Another grammar faux pas is the improper use of "you". When sitting down down in a restaurant, for example, I get cringe when the waitress...

37 minutes ago by Marg Menzies Harrison via Facebook on 10 flagrant grammar mistakes that make you look stupid
zdnetukuser

And NOW, folks, for Canonical's next trick... Kubuntu is late. Here's a pencil. Draw your own conclusions. cf.:...

1 hour ago by zdnetukuser on Linux Minterface
Moley

@kevinmchapman. The discussion here reflects the very significant number of users who really do like the traditional menu system and who wish to...

3 hours ago by Moley on A tale of two distros: Ubuntu and Linux Mint
kevinmchapman

Er, no... It is an efficient means of finding the application/file/setting you need in one place. The icons are a simply a fallback for when you...

5 hours ago by kevinmchapman on A tale of two distros: Ubuntu and Linux Mint
TerryRK

Isn't the provision of a text based search an admission by the developers that the mass of icons approach does not work? I don't need to use a...

6 hours ago by TerryRK on A tale of two distros: Ubuntu and Linux Mint
kevinmchapman

"Unity and GNOME 3 both abandon the old text-based cascading menus in favour of a graphical icon-driven system." Point truly missed. Both use a...

6 hours ago by kevinmchapman on A tale of two distros: Ubuntu and Linux Mint
TerryRK

whs001 - Thank you, I'm glad you liked the article. I absolutely agree with you on your first point. I should perhaps have made it clearer that...

7 hours ago by TerryRK on A tale of two distros: Ubuntu and Linux Mint
Dennis Nilsson

If we allow corporate interest to dictate the way our government circumvents due process against foreign entities then we should accept the same...

8 hours ago by Dennis Nilsson via Facebook on ACTA stumbles in Germany
GHar123

I totally dislike pirating of works, I fear that artists will be deterred from creating works if they think that they are going to get ripped off....

9 hours ago by GHar123 on ACTA stumbles in Germany
JCB33

How dare film makers, artists or anybody that invests in creativity stop us pirating their works for free. I want to be able to walk into my local...

15 hours ago by JCB33 on ACTA stumbles in Germany
Moley

@GrueMaster. I prefer horses for courses rather than one size fits all. I, and I suspect most other computer users, do not really wish to have...

17 hours ago by Moley on A tale of two distros: Ubuntu and Linux Mint
greycynic

The product that scares me every time I have to use it is the Office 2007 version of Excel. The first bug that I found was applying the median...

17 hours ago by greycynic on Ten flawed products that derail productivity
GrueMaster

Nice review and very informative. One thing I'd like to add (in reply to whs001's 1st question), the main reason to have the same interface from...

19 hours ago by GrueMaster on A tale of two distros: Ubuntu and Linux Mint
Frederick Wrigley

I'be been using Mint 12 since the RC came out, and I am far more happy with the Cinnamon, the Mate, and, yes (with extensions), theGnome 3...

19 hours ago by Frederick Wrigley via Facebook on A tale of two distros: Ubuntu and Linux Mint
bdantas

Excellent article. One small correction, though--although a fresh installation of Linux Mint 12 will, indeed, provide the user with a version of...

20 hours ago by bdantas on A tale of two distros: Ubuntu and Linux Mint
Alan Ralph

In related news, the ISPs club together to get the members of the Home Affairs Select Committee (ya goofed on that part, ZDNet UK) copies of "The...

21 hours ago by Alan Ralph via Facebook on MPs urge ISPs to take down terrorist material
Alan Ralph

In related news, the ISPs club together to get the members of the Home Affairs Select Committee (ya goofed on that part, ZDNet UK) copies of "The...

21 hours ago by Alan Ralph via Facebook on MPs urge ISPs to take down terrorist material
Moley

For Gnome 2 die-hards, it is possible to add icons to the bottom panel (or top top panel, if you prefer) which provide the exact Gnome 2...

21 hours ago by Moley on A tale of two distros: Ubuntu and Linux Mint
ramwellian

Your comments would seem pretty naive and immature. Your 'solution' appears to be, "gee, let's all just give in to the hackers and give them...

22 hours ago by ramwellian on Cloud computing security: no more oxymoron?
BugStalker

"Interesting thought ... If you installed Win7 as a dual boot on a machine that previously only had Linux, and it wrecked your Linux installation,...

22 hours ago by BugStalker on Windows 7 Declares War on GRUB