Large-scale Debloating of Binary Shared Libraries
Autor: | Ioannis Agadakos, Georgios Portokalidis, Vasileios P. Kemerlis, Kent Williams-King, Jearson Alfajardo, Benjamin Shteinfeld, Di Jin, David Williams-King, Nicholas DeMarinis |
---|---|
Rok vydání: | 2020 |
Předmět: |
021110 strategic
defence & security studies Computer Networks and Communications Address space Computer science business.industry Indirect branch 0211 other engineering and technologies 02 engineering and technology Attack surface computer.software_genre Code bloat Computer Science Applications Software Hardware and Architecture Software security assurance 020204 information systems 0202 electrical engineering electronic engineering information engineering Operating system Code (cryptography) Overhead (computing) business Safety Research computer Information Systems |
Zdroj: | Digital Threats: Research and Practice. 1:1-28 |
ISSN: | 2576-5337 2692-1626 |
DOI: | 10.1145/3414997 |
Popis: | Developers nowadays have access to an arsenal of toolkits and libraries for rapid application prototyping. However, when an application loads a library, the entirety of that library’s code is mapped into the process address space, even if only a single function is actually needed. The unused portion is bloat that can negatively impact software defenses by unnecessarily inflating their overhead or increasing the attack surface. In this article, we investigate whether debloating is possible and practical at the binary level. To this end, we present Nibbler : a system that identifies and erases unused functions within dynamic shared libraries. Nibbler works in tandem with defenses such as continuous code re-randomization and control-flow integrity, enhancing them without incurring additional run-time overhead. We developed and tested a prototype of Nibbler on x86-64 Linux; Nibbler reduces the size of shared libraries and the number of available functions, for real-world binaries and the SPEC CINT2006 suite, by up to 56% and 82%, respectively. We also demonstrate that Nibbler benefits defenses by showing that: (i) it improves the deployability of a continuous re-randomization system for binaries, namely, Shuffler, by increasing its efficiency by 20%, and (ii) it improves certain fast but coarse and context-insensitive control-flow integrity schemes by reducing the number of gadgets reachable through indirect branch instructions by 75% and 49%, on average. Last, we apply Nibbler on ≈30K C/C++ binaries and ≈5K unique dynamic shared libraries (i.e., almost the complete set of the Debian sid distribution), as well as on nine official Docker images (with millions of downloads in Docker Hub), reporting entrancing findings regarding code bloat at large. |
Databáze: | OpenAIRE |
Externí odkaz: |