Efficient Binary-Level Coverage Analysis

04/29/2020
by   M. Ammar Ben Khadra, et al.
0

Coverage analysis plays an important role in the software testing process. More recently, the remarkable effectiveness of coverage feedback has triggered wide interest in feedback-guided fuzzing. In this work, we introduce bcov, a tool for binary-level coverage analysis. Our tool statically instruments x86-64 binaries in the ELF format without compiler support. We implement several techniques to improve efficiency and scale to large real-world software. First, we bring Agrawal's probe pruning technique to binary-level instrumentation and effectively leverage its super blocks to reduce overhead. Second, we introduce sliced microexecution, a robust technique for jump table analysis which improves CFG precision and enables us to instrument jump table entries. Additionally, smaller instructions in x86-64 pose a challenge for inserting detours. To address this challenge, we aggressively exploit padding bytes and systematically host detours in neighboring basic blocks. We evaluate bcov on a corpus of 95 binaries compiled from eight popular and well-tested packages. Two instrumentation policies, with different edge-level precision, are applied to all functions in this corpus - more than 1.6 million functions. Our precise policy has an average performance and memory overheads of 14 respectively. Instrumented binaries do not introduce any test regressions. Finally, our jump table analysis is comparable to that of IDA Pro on gcc binaries and outperform it on clang binaries.

READ FULL TEXT
research
09/07/2022

Same Coverage, Less Bloat: Accelerating Binary-only Fuzzing with Coverage-preserving Coverage-guided Tracing

Coverage-guided fuzzing's aggressive, high-volume testing has helped rev...
research
08/29/2022

Minimum Coverage Instrumentation

Modern compilers leverage block coverage profile data to carry out downs...
research
03/01/2021

Industry Practice of Coverage-Guided Enterprise-Level DBMS Fuzzing

As an infrastructure for data persistence and analysis, Database Managem...
research
11/21/2022

Sydr-Fuzz: Continuous Hybrid Fuzzing and Dynamic Analysis for Security Development Lifecycle

Nowadays automated dynamic analysis frameworks for continuous testing ar...
research
12/31/2018

Full-speed Fuzzing: Reducing Fuzzing Overhead through Coverage-guided Tracing

Of coverage-guided fuzzing's three main components: (1) testcase generat...
research
11/24/2022

Multi-Objective Search-Based Software Microbenchmark Prioritization

Ensuring that software performance does not degrade after a code change ...

Please sign up or login with your details

Forgot password? Click here to reset