Another day, another Adobe Flash vulnerability: but this time, the researchers who found the bug are also building an attack-mitigation method that would eliminate attacks exploiting bugs like this one.
Among the 17 vulnerability patches included today in the update to Adobe Flash Player (APSB15-28) were multiple "use-after-free bugs" that could be exploited remotely by an attacker, including CVE-2015-7663. Endgame Security researchers, who found and reported that vulnerability to Adobe, also are working on a proof-of-concept technique to prevent the exploitation of any use-after-free flaws in Windows, Linux, and OS X.
Attack mitigation methods are nothing new, but to date, they've mostly been isolated to a specific class of bugs or platform, and mainly Windows. Microsoft has led this trend with its DEP (Data Execution Prevention) and ASLR (Address Space Layout Randomization) mitigation tools built into its software and adopted by many of its third-party application vendors. DEP prevents an exploit from directly injecting and executing code from sections of memory used for data, and ASLR protects against buffer overflow attacks by placing a software process's address space in random areas of memory so it's more difficult for an attacker to execute malware on a machine.
Adobe, too, has been cracking down on exploits with some mitigations for Flash, employing so-called Heap Isolation that improves the memory layout to deter some attacks.
Even so, Endgame researchers were able to use a so-called "vector corruption" method to exploit the new Flash bug, which gives an attacker read and write rights to virtual memory. Endgame says it's seen an increase in Flash exploits over the past year using this technique, which led to its study of ways to mitigate similar attacks.
Enter "control flow integrity."
"This is a strong technique that prevents exploiting a whole class of vulnerabilities -- use after free," says Cody Pierce, senior director of vulnerability research and prevention at Endgame, which boasts the US intelligence agencies and the Department of Defense as its main customers. "Right now, we're in the prototype phase and doing testing. It will be a little time before the release in a product or publicly … the first step is to get the community engaged."
Pierce says prior to mitigation methods like DEP and ASLR, patching was a losing battle. "Before those mitigations, attackers could reverse a patch, and have an exploit within a week," he says. "Mitigations increase that cost for attackers. We're hoping to do that as well."
Software security experts generally prefer security being built into software from the get-go. But attack mitigation tools have been relatively effective, they say, and can raise the bar for attackers.
That mantra has been Adobe's strategy for some time. Brad Arkin, chief security office of Adobe, three years ago urged security researchers to dig deep and come up with new attack-mitigation methods. At the time, Adobe had recently added sandboxing to help protect its applications.
"I am a big fan of engineering solutions like DEP and ASLR that you can build directly into your software. In fact, I find it distressing when these kinds of approaches are not used when they should be," says Gary McGraw, CTO of Cigital. "Any engineering technique that raises the bar for attack and exploit is good in my book."
But mitigation techniques work best when they're built into the software from the ground up, he says. "You can't patch your way into this," he says.
The danger is that they could introduce performance problems or new risks, he says. "One tradeoff is sometimes efficiency, especially in a constrained embedded system," McGraw says. "All engineering solutions like this should be carefully constructed and vetted so as not to introduce new risks accidentally. Publishing PoC code can help boot a thorough review process. But be very wary of any new magic stuff: recall that way back when the first implementation of Microsoft’s GS compiler flag was fundamentally broken."
The new mitigation method Pierce and his team created works something like this: an algorithm stops attackers from inserting their code into certain locations in memory, using Heap Isolation. "It almost forces isolation," Pierce says. Add control flow integrity or CFI, which detects active exploitation attempts.
"The moment when an attacker has corrupted something in memory that a program is about to execute … when they are about to [go to] the second phase where they download a payload or persistence, the CFI prototype picks up that change," Pierce says.
In a technical blog post today, Pierce describes CFI this way: "To accomplish this, Endgame has adapted and expanded on the idea of utilizing processor functionality to determine the exact moment when this happens. Inspired by a novel approach published by researchers at Fudan University[11, 12], we leverage CPU branch misprediction, allowing us to introduce control flow integrity policies without expensive binary modifications to a target application such as hooking or dynamic instrumentation."