Cyber-attacks are estimated to cost the world economy more than $400 billion annualy. From botnets to advanced persistent threats to targeted attacks, system vulnerabilities in combination with a successful exploit can grant an attacker unauthorized access to a computing system, entailing the possibility to exfiltrate sensitive data of valuable individuals, companies, and critical infrastructures.
Zero-day exploits can be used to leverage unknown vulnerabilities in order to gain access in a stealthy way to systems believed to be secure. And they are very valuable, being traded for considerable sums in the upper six-digit range, which reflects the months of work that it takes highly skilled professionals to develop a working exploit.
“Our goal is to protect trusted systems by reducing the probability of compromise and increasing the cost of crafting exploits, while staying within performance targets and usability requirements.”
—Anil Kurmus, IBM scientist
To address the increasingly complex task of securing modern systems, we follow a three-pronged strategy
Finding vulnerabilities from the code base
We use static and dynamic program analysis methods such as fuzz testing to discover vulnerabilities before attackers do.
Preventing vulnerabilities from being reachable
Bugs in the code that are not available to the attacker cannot turn into vulnerabilities. Using attack surface reduction, we limit the exposed APIs and code paths to the absolute minimum.
Preventing exploitation of reachable vulnerabilities
We harden programs to make them more robust so that attackers cannot make use of bugs to craft an exploit.
 A. Kurmus, N. Ioannou, M. Neugschwandtner, N. Papandreou, T. Parnel
“Is there a ‘rowhammer’ for MLC NAND flash SSDs? An analysis of filesystem attack vectors”
To appear in: Proceedings of the Workshop on Offensive Technologies (WOOT’17) 2017.