A US computer scientist and a Microsoft researcher have devised a program that drastically reduces application crashes and can prevent some types of attack by altering the way applications use memory.
The program, called DieHard, was officially launched over the festive period, following development funded by large grants from Microsoft, Intel and the US National Science Foundation.
Developers Emery Berger, a computer scientist from the University of Massachusetts Amherst, and Microsoft's Ben Zorn have made DieHard freely available for non-commercial use at their website.
The problems Berger wanted to address were caused by the fact that despite the huge amount of memory installed in today's PCs, "programmers are still writing code as if memory is in short supply".
That leads to errors such as double-frees, invalid frees, and various types of overflow. Berger said DieHard eliminates or makes less dangerous many of these problems by making chunks of memory available at various locations, and assigning addresses randomly.
Address-space randomisation is a technique used in some versions of Linux and in Windows Vista, but Berger said DieHard is a much more thorough application of the idea. Without randomisation, attackers can easily locate where applications store sensitive data such as passwords. Attackers also commonly use memory errors to execute malicious code and take control of systems.
DieHard also secretly launches multiple copies of some applications, so that when one application is about to crash it can be shut down, while the others continue to run.
He said DieHard completely prevents double-free and invalid-free errors from having any effect, reduces the likelihood of dangling pointer errors and moderate buffer overflows. It prevents certain library-based heap overflows and all but eliminates heap corruption.
The program is available for Windows XP, Windows Vista and Linux, but the Windows versions only protect the Firefox browser so far. The Linux version protects any application launched once DieHard is running.
Programmers on either Windows or Linux can use DieHard to protect any application they are developing.
One caveat is that DieHard noticeably increases memory usage – a rise of 50 to 75 percent, according to Berger. Application performance shouldn't be noticeably altered, though, as long as the system has sufficient memory.