EffectiveSan: Type and Memory Error Detection using Dynamically Typed C/C++
Gregory J. Duck, Roland H. C. Yap

TL;DR
EffectiveSan is a runtime tool that dynamically checks object types in C/C++ to detect memory errors like overflows, use-after-free, and type confusion, improving security and reliability.
Contribution
It introduces the concept of dynamically typed C/C++, implementing it through EffectiveSan to detect sub-object bounds errors with high compatibility and reasonable overhead.
Findings
Detected new type and memory errors in SPEC2006 and Firefox.
Achieved high compatibility with acceptable performance overhead.
Can detect sub-object bounds errors using dynamic type checking.
Abstract
Low-level programming languages with weak/static type systems, such as C and C++, are vulnerable to errors relating to the misuse of memory at runtime, such as (sub-)object bounds overflows, (re)use-after-free, and type confusion. Such errors account for many security and other undefined behavior bugs for programs written in these languages. In this paper, we introduce the notion of dynamically typed C/C++, which aims to detect such errors by dynamically checking the "effective type" of each object before use at runtime. We also present an implementation of dynamically typed C/C++ in the form of the Effective Type Sanitizer (EffectiveSan). EffectiveSan enforces type and memory safety using a combination of low-fat pointers, type meta data and type/bounds check instrumentation. We evaluate EffectiveSan against the SPEC2006 benchmark suite and the Firefox web browser, and detect several…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
