GWP-ASan: Sampling-Based Detection of Memory-Safety Bugs in Production
About
Despite the recent advances in pre-production bug detection, heap-use-after-free and heap-buffer-overflow bugs remain the primary problem for security, reliability, and developer productivity for applications written in C or C++, across all major software ecosystems. Memory-safe languages solve this problem when they are used, but the existing code bases consisting of billions of lines of C and C++ continue to grow, and we need additional bug detection mechanisms. This paper describes a family of tools that detect these two classes of memory-safety bugs, while running in production, at near-zero overhead. These tools combine page-granular guarded allocation and low-rate sampling. In other words, we added an "if" statement to a 36-year-old idea and made it work at scale. We describe the basic algorithm, several of its variants and implementations, and the results of multi-year deployments across mobile, desktop, and server applications.
Related benchmarks
| Task | Dataset | Result | Rank | |
|---|---|---|---|---|
| Bug Detection | Juliet Test Suite CWE415 - double free | Detection Rate98.6 | 5 | |
| Bug Detection | Juliet Test Suite CWE122 - heap-based buffer overflow | Detection Rate23.15 | 5 | |
| Bug Detection | Juliet Test Suite CWE416 - use after free | Detection Rate (CWE416)0.00e+0 | 5 |