X
Tech

DieHard, the software

No, it's not another movie sequel. DieHard is a piece of software which helps programs to run correctly and protects them from a range of security vulnerabilities. It has been developed by computer scientists from the University of Massachusetts Amherst -- and Microsoft. DieHard prevents crashes and hacker attacks by focusing on memory. Our computers have thousands times more memory than 20 years ago. Still, programmers are privileging speed and efficiency over security, which leads to the famous "buffer overflows" which are exploited by hackers.
Written by Roland Piquepaille, Inactive

No, it's not another movie sequel. DieHard is a piece of software which helps programs to run correctly and protects them from a range of security vulnerabilities. It has been developed by computer scientists from the University of Massachusetts Amherst -- and Microsoft. DieHard prevents crashes and hacker attacks by focusing on memory. Our computers have thousands times more memory than 20 years ago. Still, programmers are privileging speed and efficiency over security, which leads to the famous "buffer overflows" which are exploited by hackers.

Here is a short description of the problem.

Today’s computers have more than 2,000 times as much memory as the machines of yesteryear, yet programmers are still writing code as if memory is in short supply. Not only does this make programs crash annoyingly, but it also can make users vulnerable to hacker attacks, says computer scientist Emery Berger from the University of Massachusetts Amherst.

This is why he developed DieHard, a software that you can download for free and which runs under Linux and Windows.

Many programmers still don't realize that our computers have hundreds of megabytes of memory -- if not more. So they are trying to reuse memory as much as they can. When a program is running, it often requests some memory. But usually, this space is already occupied -- and overwritten -- sometimes causing overflows. This is why DieHard is secretly running several instances of the program you're using.

Below is a diagram showing the replicated DieHard architecture. "Input is broadcast to multiple replicas, each equipped with a different, fully randomized memory manager. Output is only committed when at "least two replicas agree on the result." (Credit: Emery Berger).

The replicated DieHard architecture

Of course, you'll need more memory. In the DieHard FAQs, you'll see that depending on your application, memory consumption will increase by 50 to 75%. But is it really important?

These problems wouldn’t arise if programmers were a little less focused on speed and efficiency, which is rarely a problem these days, and more attentive to security issues, says Berger. "Today we have way more memory and more computer power than we need," he says. "We want to use that to make systems more reliable and safer, without compromising speed."

For more information, you can read this technical paper, "DieHard: Probabilistic Memory Safety for Unsafe Languages" (PDF format, 11 pages, 338 KB), from which the above diagram has been extracted. You also can read this presentation (PDF format, 28 slides, 346 KB) which has been shown at PLDI 2006 (Programming Language Design & Implementation) or watch this video (Microsoft Media Player format, 1 minute and 35 seconds, 21.5 MB).

Sources: University of Massachusetts Amherst news release, December 26, 2006; and various websites

You'll find related stories by following the links below.

Editorial standards