A Systematic Impact Study for Fuzzer-Found Compiler Bugs

02/25/2019
by   Michaël Marcozzi, et al.
0

Despite much recent interest in randomised testing (fuzzing) of compilers, the practical impact of fuzzer-found miscompilations on real-world applications has barely been assessed. We present the first quantitative study of the tangible impact of fuzzer-found compiler bugs. We follow a novel methodology where the impact of a miscompilation bug is evaluated based on (1) whether the bug appears to trigger during compilation; (2) whether the effects of triggering a bug propagate to the binary code that is generated; and (3) whether a binary-level propagation leads to observable differences in the application's test suite results. The study is conducted with respect to the compilation of more than 11 million lines of C/C++ code from 318 Debian packages, using 45 historical bugs in the Clang/LLVM compiler, either found using four distinct fuzzers, the Alive formal verification tool, or human users. The results show that almost half of the fuzzer-found bugs propagate to the generated binaries for some packages, but never cause application test suite failures. User-reported and Alive bugs have a lower impact, with less frequently triggered bugs and also no test failures. The major conclusions are that (1) either application test suites do not reflect real-world usage or the impact of compiler bugs on real-world code is limited, and (2) to the extent that compiler bugs matter, fuzzer-found compiler bugs are first class citizens, having at least as much impact as bugs from other sources.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
02/14/2022

Practical Testing of a C99 Compiler Using Output Comparison

A simple technique is presented for testing a C99 compiler, by compariso...
research
11/27/2018

How a simple bug in ML compiler could be exploited for backdoors?

Whenever a bug occurs in a program, software developers assume that the ...
research
02/05/2019

Fearless Concurrency? Understanding Concurrent Programming Safety in Real-World Rust Software

Rust is a popular programming language in building various low-level sof...
research
08/27/2019

K-CONFIG: Using Failing Test Cases to Generate Test Cases in GCC Compilers

The correctness of compilers is instrumental in the safety and reliabili...
research
07/02/2023

LLM4CBI: Taming LLMs to Generate Effective Test Programs for Compiler Bug Isolation

Compiler bugs pose a significant threat to safety-critical applications,...
research
10/10/2022

The Foil: Capture-Avoiding Substitution With No Sharp Edges

Correctly manipulating program terms in a compiler is surprisingly diffi...
research
06/14/2023

Characterizing Bugs in Python and R Data Analytics Programs

R and Python are among the most popular languages used in many critical ...

Please sign up or login with your details

Forgot password? Click here to reset