VTPin: Practical VTable Hijacking Protection for Binaries Pawel Sarbinowski Vasileios P. Kemerlis Cristiano Giuffrida Vrije Universiteit Amsterdam Brown University Vrije Universiteit Amsterdam
[email protected] [email protected] [email protected] Elias Athanasopoulos Vrije Universiteit Amsterdam
[email protected] ABSTRACT 1. INTRODUCTION VTable hijacking has lately been promoted to the de facto technique The recent advances in software hardening have undoubtedly for exploiting C++ applications, and in particular web browsers. made exploitation a challenging craft [45]. Yet, despite the plethora VTables, however, can be manipulated without necessarily corrupt- of defenses in place [37], attackers still find ways to compromise ing memory, simply by leveraging use-after-free bugs. In fact, in essential commodity software, like web browsers [5,6]. Modern the recent Pwn2Own competitions all major web browsers were exploits are highly sophisticated and typically leverage a variety of compromised with exploits that employed (among others) use-after- different vulnerabilities to bypass established protections, such as free vulnerabilities and VTable hijacking. address space layout randomization (ASLR) [42], non-executable In this paper, we propose VTPin: a system to protect against memory [12], and sandboxing [18]. To this end, temporal safety VTable hijacking, via use-after-free vulnerabilities, in large C++ errors, and particularly use-after-free vulnerabilities, are becoming binaries that cannot be re-compiled or re-written. The main idea be- a key component of the attackers’ arsenal [1,2,7,8]. Interestingly, hind VTPin is to pin all the freed VTable pointers on a safe VTable exploiting use-after-free bugs does not require corrupting memory; under VTPin’s control.