In spite of their effectiveness in the context of vulnerability discovery, current state-of-the-art binary program analysis approaches are limited by inherent trade-offs between accuracy and scalability. In this paper, we identify a set of vulnerability properties that can aid both static and dynamic vulnerability detection techniques, improving the precision of the former and the scalability of the latter. By carefully integrating static and dynamic techniques, we detect vulnerabilities that exhibit these properties in real-world programs at a large scale. We implemented our technique, making several advancements in the analysis of binary code, and created a prototype called ARBITER. We demonstrate the effectiveness of our approach with a large-scale evaluation on four common vulnerability classes: CWE-131 (Incorrect Calculation of Buffer Size), CWE-252 (Unchecked Return Value), CWE-134 (Uncontrolled Format String), and CWE-337 (Predictable Seed in Pseudo-Random Number Generator). We evaluated our approach on more than 76,516 x86-64 binaries in the Ubuntu repositories and discovered new vulnerabilities, including a flaw inserted into programs during compilation.
Arbiter: Bridging the static and dynamic divide in vulnerability discovery on binary programs
USENIX 2022, 31st USENIX Security Symposium, August 10–12, 2022, Boston, MA, USA
Copyright Usenix. Personal use of this material is permitted. The definitive version of this paper was published in USENIX 2022, 31st USENIX Security Symposium, August 10–12, 2022, Boston, MA, USA and is available at :
PERMALINK : https://www.eurecom.fr/publication/6845