Windows Vista brought an interesting security feature called ASLR – Address Space Layout Randomization. This uses a random memory address to execute code, but in Windows 8, Windows 8.1 and Windows 10, it seems that this feature doesn’t always implement correctly.
According to a security analyst, in these three last versions of Windows, ASLR is not using random memory addresses. In other words, it’s useless.
How to implement ASLR manually
By executing code in a random location, ASLR helps protect against exploits that you try to take advantage of code that is executed in predictable or known memory addresses.
The problem appears when EMET or Windows Defender Exploit Guard is used to enable mandatory ASLR on a system-wide basis.
The security expert who studied the issue is Will Dormann, and he explains everything you need to know about the issue that comes because of a registry entry.
According to Dormann, both Windows Defender Exploit Guard and EMET enable system-wide ASLR without also enabling system-wide bottom-up ASLR.
Even if Windows Defender Exploit Guard has a system-wide option for system-wide bottom-up-ASLR, the default GUI value of “On by default” doesn’t reflect the underlying registry value.
This will lead to the fact that programs without /DYNAMICBASE to get relocated without an entropy. The programs will be transferred to the same address every time across reboots and across different systems.
The solution is that you have to create a .reg file with the following text:
Windows Registry Editor Version 5.00
Then, you have to import this file into the Registry Editor, and everything should be sorted out.
Some users are stating that the problem stems from the EMET and its replacement which is a tool for sysadmins who “have too much time on their hands” and that was discontinued without a replacement. They don’t think that the problem is with the underlying ASLR system.
RELATED STORIES TO CHECK OUT: