(2021) NoVT: Eliminating C++ Virtual Calls to Mitigate Vtable Hijacking.
| 
 | Text NoVT-for-EuroSP-2021-cr1.pdf Download (363kB) | Preview | 
Abstract
The vast majority of nowadays remote code execution attacks target virtual function tables (vtables). Attackers hijack vtable pointers to change the control flow of a vulnerable program to their will, resulting in full control over the underlying system. In this paper, we present NoVT, a compiler-based defense against vtable hijacking. Instead of protecting vtables for virtual dispatch, our solution replaces them with switch-case constructs that are inherently control-flow safe, thus preserving control flow integrity of C++ virtual dispatch. NoVT extends Clang to perform a class hierarchy analysis on C++ source code. Instead of a vtable, each class gets unique identifier numbers which are used to dispatch the correct method implementation. Thereby, NoVT inherently protects all usages of a vtable, not just virtual dispatch. We evaluate NoVT on common benchmark applications and real-world programs including Chromium. Despite its strong security guarantees, NoVT improves runtime performance of most programs (mean overhead -0.5%, -3.7% min, 2% max). In addition, protected binaries are slightly smaller than unprotected ones. NoVT works on different CPU architectures and protects complex C++ programs against strong attacks like COOP and ShrinkWrap.
| Item Type: | Conference or Workshop Item (A Paper) (Paper) | 
|---|---|
| Divisions: | Christian Rossow (System Security Group, SysSec) | 
| Conference: | EuroS&P IEEE European Symposium on Security and Privacy | 
| Depositing User: | Markus Bauer | 
| Date Deposited: | 15 Feb 2021 15:46 | 
| Last Modified: | 15 Feb 2021 15:46 | 
| Primary Research Area: | NRA3: Threat Detection and Defenses | 
| URI: | https://publications.cispa.saarland/id/eprint/3364 | 
Actions
Actions (login required)
|  | View Item | 
