Debloating Software through Piece-Wise Compilation and Loading
summary
Study measures show only 5% of libc is used on average across 2,000 Ubuntu programs and vlc uses about 18–21%. A compiler+loader system writes a dependency graph into an ELF optional section and the loader prunes unused functions at load time, achieving ~79% code removal from coreutils and 86% from SPEC CPU2006 and removing ~71–73% of ROP gadgets, with reported load-time overheads on tested apps around 20–30 ms.
AI-written summary · about
chapters (23)
- 0:00Intro
- 0:29Programs are bloated
- 1:38gibc footprint (Ubuntu 16.04 LTS Desktop)
- 2:16Popular Shared Libraries (Ubuntu 16.04)
- 2:54Static Dead Code Elimination
- 3:46Our Approach: Remove Unused Code
- 5:10Challenges
- 6:42Piece-wise System Design
- 8:05Backwards Compatibility
- 8:59Piece-wise Compiler
- 10:20Libc Example: Dependency Graph (Call Graph only)
- 11:52Libc Example: Global Scan
- 12:21Libc Example: Pointer Analysis
- 12:39Libc Example: Localized Scan
- 13:46Piece-wise Loader
- 14:48CFI and Piece-wise
- 15:37Evaluation
- 16:16Piece-wise vs Static Linking for libc
- 17:20Debloating curl
- 17:38Gadget Reduction for libc
- 18:27vulnerability Elimination
- 19:09Artifact
- 25:04Load Time Overhead
related talks
02h 25mHow to Keep C++ Binaries Small - Techniques for C++ Optimization
19mExploiting Undefined Behavior in C/C++ Programs for Optimization: A Study on the(…)
15mNot So Fast: Understanding and Mitigating Negative Impacts of Compiler Optimizations on Code Reuse G
16mIntroduction to Procedural Debugging through Binary Libification
25mSoftware Multiplexing - Share Your Libraries and Statically Link Them Too
19mLuci: Loader-based Dynamic Software Updates for Off-the-shelf Shared Objects
49mWriting better code with help from Qt and the compiler
18mDon't Look UB: Exposing Sanitizer-Eliding Compiler Optimizations
