Clair Obscur
The Light and Shadow of System Call Interposition - From Pitfalls to Solutions with K23
Jesús María Gómez Moreno (TU Delft - Electrical Engineering, Mathematics and Computer Science)
Vissarion Moutafis (TU Delft - Electrical Engineering, Mathematics and Computer Science)
Antreas Dionysiou (TU Delft - Electrical Engineering, Mathematics and Computer Science, Frederick University Cyprus)
Fernando Kuipers (TU Delft - Electrical Engineering, Mathematics and Computer Science)
Georgios Smaragdakis (TU Delft - Electrical Engineering, Mathematics and Computer Science)
Bart Coppens (Universiteit Gent)
Alexios Voulimeneas (TU Delft - Electrical Engineering, Mathematics and Computer Science)
More Info
expand_more
Other than for strictly personal use, it is not permitted to download, forward or distribute the text or part of it, without the consent of the author(s) and/or copyright holder(s), unless the work is under an open content license such as Creative Commons.
Abstract
System call interposition is a widely used technique to trace and modify application behavior. Over the years, numerous interposition mechanisms have been proposed, each with distinct strengths and trade-offs. Recently, advances in binary rewriting - specifically targeting x86-64 syscall and sysenter instructions - have led to new techniques that take important steps forward, with some claiming to support general-purpose use.We analyze state-of-the-art interposers in depth and uncover several fundamental design and implementation flaws - pitfalls that we collectively term System Call Interposition Pitfalls. For example, prior work cannot reliably interpose all system calls and may even corrupt code and data. These flaws undermine the practicality of existing solutions in real-world scenarios, rendering them unsuitable as universal interposition mechanisms.Motivated by our findings, we design and implement a new plug-and-play system call interposition approach named K23, targeting x86-64 platforms. K23 addresses the uncovered pitfalls via a hybrid design that unifies the strengths of prior methods, combining offline and online phases that leverage multiple Linux interfaces and binary rewriting. Our evaluation shows that K23 overcomes the key limitations of state-of-the-art solutions while remaining highly efficient. To our knowledge, K23 is the first general-purpose interposer suitable for a wide range of use cases and environments, from low-end devices to performance-critical, datacenter-scale workloads.