SoK: Sanitizing for Security
This work addresses the problem of improving security in C and C++ programming for developers and security practitioners by offering a comprehensive review, but it is incremental as it synthesizes existing tools without introducing new methods.
The paper provides a systematic overview of sanitizers, dynamic bug-finding tools for C and C++ that detect security vulnerabilities by observing program execution, and it taxonomizes these tools, their coverage, performance, and trade-offs.
The C and C++ programming languages are notoriously insecure yet remain indispensable. Developers therefore resort to a multi-pronged approach to find security issues before adversaries. These include manual, static, and dynamic program analysis. Dynamic bug finding tools --- henceforth "sanitizers" --- can find bugs that elude other types of analysis because they observe the actual execution of a program, and can therefore directly observe incorrect program behavior as it happens. A vast number of sanitizers have been prototyped by academics and refined by practitioners. We provide a systematic overview of sanitizers with an emphasis on their role in finding security issues. Specifically, we taxonomize the available tools and the security vulnerabilities they cover, describe their performance and compatibility properties, and highlight various trade-offs.