Annual Computer Security Applications Conference (ACSAC) 2016

Full Program »

VTPin: Practical VTable Hijacking Protection for Binaries

VTable hijacking has lately been promoted to the de facto technique for exploiting C++ applications, and in particular web browsers. VTables can be manipulated without corrupting memory, simply by leveraging use-after-free vulnerabilities. In recent Pwn2Own competitions all major web browsers were compromised with exploits based on use-after-free vulnerabilities and VTable hijacking. In this paper, we propose VTPin: a system to protect against VTable hijacking, via use-after-free vulnerabilities, in large C++ binaries that cannot be re-compiled or re-written. The main idea behind VTPin is to pin all the freed VTable pointers on a safe VTable under VTPin's control. Specifically, for every occurring object deallocation, VTPin deallocates all space allocated, but preserves and updates the VTable pointer with the address of the safe VTable. Hence, any dereferenced dangling pointer can only invoke a method provided by VTPin's safe object. Subsequently, all virtual-method calls due to dangling pointers are not simply neutralized, but they can be logged, tracked, and patched. Compared to other solutions that defend against VTable hijacking, VTPin exhibits certain characteristics that make it suitable for practical and instant deployment in production software. First, VTPin protects binaries, directly and transparently, without requiring source compilation or binary rewriting. Second, VTPin is not an allocator replacement, and thus it does not interfere with the allocation strategies and policies of the protected program; it intervenes in the deallocation process only when a virtual object is to be freed for preserving the VTable pointer. Third, VTPin is fast; Mozilla Firefox, protected with VTPin, experiences an average overhead of 1% to 4.1% when running popular browser benchmarks.

Author(s):

Pawel Sarbinowski    
Vrije Universiteit Amsterdam
Netherlands

Vasileios P. Kemerlis    
Brown University
United States

Cristiano Giuffrida    
Vrije Universiteit Amsterdam
Netherlands

Elias Athanasopoulos    
Vrije Universiteit Amsterdam
Netherlands

 

Powered by OpenConf®
Copyright©2002-2016 Zakon Group LLC