Microsoft has won agreement with PC makers to add a fundamental change at the BIOS level to improve security in Windows Vista.
Manufacturers will help make the software giant’s Address Space Layout Randomization (ASLR) feature — an idea from the Linux and Unix world — common and fully functioning on Vista PCs. It could make automated, large-scale attacks significantly more difficult.
The feature relies on another new Vista security feature, Data Execution Prevention (DEP), also known as No Execute (NX), to function fully, but PC makers have the ability to disable DEP at the BIOS level, for example because of concerns about application compatibility.
Now, however, Microsoft security program manager Michael Howard has revealed that all the major PC makers have agreed to enable DEP by default. He didn’t name the specific companies, but said the companies include “all the major OEMs”. “This is huge,” he said in an MSDN blog posting.
ASLR involves arranging the positions of certain data areas, such as the position of libraries, heap and stack, randomly in a process’ address space. Certain types of attacks, which rely on these components having predictable target addresses, thus have a low chance of success when ASLR is in place.
Before Vista, the feature has been most prominently used in the OpenBSD Unix variant and the PaX and Exec Shield security patches for Linux. Most newer PC processors support DEP, and Howard gave instructions for checking DEP capability for Vista users on older hardware.
Howard said he had discussed the matter with PC makers at a November meeting, which was also attended by chipset manufacturers and hardware component suppliers. New features such as DEP are expected to take some time to bed in — at the moment, for instance, DEP is currently switched off in Internet Explorer by default because it can make plug-ins fail.
Howard said on Tuesday that a bit of initial progress has been made at dealing with this issue — Adobe has updated its Acrobat/Reader and Flash Player plug-ins to work with DEP.
According to Howard, ASLR can defeat attacks such as “return-to-libc”, where exploit code attempts to call a system function to open a socket. Because the memory address of the function is randomized, such attacks are much harder to carry out, Howard said in his blog earlier this year. “In the case of Windows Vista Beta 2, a DLL or EXE could be loaded into any of 256 locations, which means an attacker has a 1/256 chance of getting the address right,” he said. “In short, this makes it harder for exploits to work correctly.”
He cautioned, however that not only could ASLR cause compatibility issues, but it won’t solve all problems. “It is not a panacea, it is not a replacement for secure code,” he said. “It is a useful defense because it makes Windows systems look ‘different’ to malware, making automated attacks harder.”
Howard also outlined a number of other security features Microsoft has been adding to Vista over time, such as the /GS stack-based buffer overrun detection option; /SafeSEH, which can automatically kill some corrupted processes; Data Execution Protection, aka NX, which requires hardware support and can prevent buffer overflows; and Function Pointer Obfuscation, which involves encoding many of Vista’s long-lived pointers, frequent targets for attack.
Microsoft released a whitepaper detailing these security features.