Researchers penetrate last bastion of Windows security
With a little help from Adobe
Security researchers have defeated vulnerability protections baked into the latest versions of Internet Explorer, demonstrating that it's possible to poke holes in a safety net that's widely relied on to keep end users safe from drive-by exploits.
By exploiting weaknesses in Adobe Systems' Flash Player, researchers have devised two separate attacks that bypass mitigations Microsoft put into IE 7 and 8. Known as ASLR, or address space layout randomization, and DEP, or data execution prevention, the technologies are designed to lessen the severity of bugs by making it hard for them to cause the execution of malicious code.
Both techniques wield the so-called just-in-time compiler in Flash so that a computer's memory is blanketed with large chunks of identical shellcode. The "JIT-spray" allows attackers to overcome ASLR, which normally thwarts execution by picking a different memory location to load system components each time an operating system is started.
"With this JIT-spray, it works fairly reliably, so at least nine out of 10 times you'll guess the right position," said Dionysus Blazakis, a researcher who is demonstrating one of the attacks on Wednesday at the Black Hat security conference in Washington, DC. "The compilers do this optimizing, so it wasn't just a given that this was possible."
The attacks are more than a mere academic exercise because ASLR and DEP have been some of the only defenses preventing lethal exploits of buffer overflows and other bugs in software running on Windows PCs. Last month's unusually advanced attacks on Adobe's Reader application didn't work on IE 8, thanks to the protections.
By using the JIT-spraying technique, however, Blazakis was able to bypass the measures and cause IE 8 to open the Windows calculator, proof that he could exploit the Adobe bug to execute code of his choice.
Similarly, a potent flaw used to pierce the defenses of Google and other large companies was present in all recent versions of IE, but only exploitable on version 6, which was released in 2001.
But using a similar JIT-spraying attack, researchers at Miami-based security firm Immunity have figured out how to reliably exploit the bug in IE 8 running on Windows 7. The attack was released Wednesday to the early updates section for Immunity's Canvas tool sold to penetration testers.
Nicolas Pouvesle, the Immunity senior security researcher who developed the exploit, said overcoming the protections wasn't easy. First, he had to figure out how to locate his malicious shellcode in Windows 7 memory. Then he had to figure out how to overcome DEP, which prevents data loaded into memory from being executed.
"ASLR and DEP in IE 8 on Windows 7 provides a really good protection against these kinds of exploits," he said. "It took us quite some time to put everything together."
After using Flash to spray "lots of big Flash files" into memory, Pouvesle overcame DEP by converting action script into machine code and lacing it with camouflaged shellcode.
This isn't the first time attackers have figured out how to bypass memory protections built into Microsoft software. After a technique known as heap spraying came into vogue, Microsoft added protections to thwart it in IE 8, Pouvesle said. This time around, it's not at all clear Microsoft will be able to prevent the newfangled attacks so easily.
"A change in the memory allocator could prevent" JIT-spraying," he said. "That is, I think, way too complex to do. I don't think we're going to see that happen anytime soon." ®