Affiliation:
1. SRI International, New York, NY
2. Brown University, Providence, RI
3. Columbia University, New York, NY
4. Stevens Institute of Technology, Hoboken, NJ
Abstract
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.
Publisher
Association for Computing Machinery (ACM)
Reference108 articles.
1. Control-flow integrity
2. Nibbler
3. Alexa. 2018. The top 500 sites on the web. Retrieved from https://www.alexa.com/topsites. Alexa. 2018. The top 500 sites on the web. Retrieved from https://www.alexa.com/topsites.
4. Function boundary detection in stripped binaries
Cited by
8 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. SysPart: Automated Temporal System Call Filtering for Binaries;Proceedings of the 2023 ACM SIGSAC Conference on Computer and Communications Security;2023-11-15
2. FineIBT: Fine-grain Control-flow Enforcement with Indirect Branch Tracking;Proceedings of the 26th International Symposium on Research in Attacks, Intrusions and Defenses;2023-10-16
3. Thread-Level Attack-Surface Reduction;Proceedings of the 24th ACM SIGPLAN/SIGBED International Conference on Languages, Compilers, and Tools for Embedded Systems;2023-06-13
4. Coverage-Based Debloating for Java Bytecode;ACM Transactions on Software Engineering and Methodology;2023-04-04
5. Trimmer: Context-Specific Code Reduction;Proceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering;2022-10-10