When a zero-day vulnerability is exploited in the wild, it's essential to identify the bug at the root of the attack. This "root cause analysis" informs researchers how an attack unfolded.
"We care a lot about making it harder for people to exploit users using zero-days," said Google Project Zero researcher Maddie Stone in a Black Hat presentation on the topic. "When zero-day exploits are detected in the wild, that's the failure case for these attackers. And so we need to learn as much as possible each time that happens."
Much of the time, when the security industry learns of a zero-day exploit in a blog post or advisory, there is often information about the malware payload or attack group behind it, but little about the "nitty gritty" of how intruders got the initial access to launch their attack.
The goal of a root cause analysis comes down to figuring out what that vulnerability is, in such depth that researchers can trigger it, Stone explained. This shows they understand all the details – not just the overarching summary – as well as the attackers' exploit methodology. This information can help determine which actions should be taken next to prevent it from being exploited again, such as structural improvements, variant analysis, and new detection methods.
Over the past 12 months, Project Zero has analyzed 11 zero-day vulnerabilities exploited in the wild. Researchers used five different techniques to identify their root cause, underscoring a point Stone emphasized in her talk: the process for analyzing a vulnerability can vary each time.
"There's a lot of different ways to reverse engineer a vulnerability," she explained, and these can vary depending on the information available and the target being exploited. Security researchers often talk about processes as a monolith; in reality, there's a lot of creativity involved and paths they can take to raise the likelihood for success while using fewer resources.
She broke the techniques down into four categories. Reversing the exploit code can be done if a researcher has the exploit sample. Source code patch diffing can be used if they have access to a target's source code; for example, if someone is researching on Android, Chrome, or Firefox, or if they have privileged access as a vendor or partner. Binary patch diffing involves comparing two binary builds of the same code; one known to be vulnerable and one containing a patch. "Bug hunting based on exploit details" is possible with tips on an unpatched vulnerability.
The technique a researcher uses largely depends on their role. Understanding not just what the technique is, but how it's done, can vary from one zero-day to the next.
"Your role influences what data you have access to, and how much you're willing to invest in getting to the root cause vulnerability," Stone explained.
A person who discovered the exploit, for example, may not decide to do a root cause analysis because their primary goal is to get it fixed. If they wait on reporting until they achieve root cause analysis, they prolong the amount of time a vulnerability goes unpatched. In these cases, they often have access to an exploit but not necessarily the source code or vendor expertise.
Vendors are another story. If a researcher works for a vendor, they likely have access to more details, whether that's the experts who wrote the code being exploited, or the source code itself, and/or the exploit. In these cases, Stone said, they should complete root cause analysis.
Then there are the third-party users and researchers, who see something was exploited in the wild through a blog post or advisory and likely have the least amount of information. They'll need to decide how much time and energy they want to invest in the project.
Project Zero has been in each of these positions, she noted. "Sometimes we discover [the vulnerability], sometimes vendors ask to partner with us for expertise [and] help figure out the root cause; and most often we're the third party researchers who are trying to dig in and learn as much as we can."
Stone's presentation (slides available) detailed seven case studies across a variety of platforms including Windows, iOS, WhatsApp, Firefox, and Android. These cases revealed similarities and differences in reverse engineering techniques across targets. Some were successful, others were not – a takeaway she emphasized to her audience of security pros.
"Not every endeavor is successful," she said, but "each time we don't get to the end goal, or have a success of identifying the root cause, we have a lot to learn from that we can then apply, if we're deliberate, to the next set to raise the probability of success."