Coverage-Guided Fuzzing with Dynamic Instrumentation Control

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing coverage-guided fuzzing techniques face high instrumentation overhead, leading to decreased program vulnerability detection performance after instrumentation code removal, and are limited to specific programming languages like C/C++.

Innovation Solution

A method that calculates dormant coverage and updates instrumentation code based on this coverage, allowing for efficient fuzzing across various programming languages, including Java, by adding or removing instrumentation code dynamically.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If instrumentation code is inserted for coverage measurement, then coverage tracking capability is improved, but execution time increases by 2-10 times

Engineering Contradiction:
Improvecoverage tracking capabilityVSAvoidexecution time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The instrumentation code is dynamically managed through a coverage map that tracks which coverage points have been visited. The system selectively enables or disables instrumentation code based on whether the corresponding coverage point has been executed, transitioning the fuzzer from instrumented to non-instrumented mode for visited points while maintaining instrumentation for unvisited points.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

Instead of uniformly applying instrumentation throughout the program, the system applies instrumentation locally only at unvisited coverage points. The coverage map enables selective instrumentation where needed, avoiding the overhead of instrumenting entire code paths that have already been explored.

Inventive Principle:
Principle #3Local quality

2Productivity

If instrumentation code is removed after single execution to reduce overhead, then execution efficiency is improved, but program vulnerability detecting performance degrades

Engineering Contradiction:
Improveexecution efficiencyVSAvoidprogram vulnerability detecting performance
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The system continuously monitors coverage point execution status and uses this feedback to dynamically adjust instrumentation. When a coverage point is visited, the system records this information in the coverage map and subsequently disables instrumentation for that point, while maintaining instrumentation for unvisited points. This feedback mechanism ensures that instrumentation is removed only when coverage is achieved, not prematurely.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The coverage map is pre-computed based on the program's control flow graph before fuzzing begins. This preliminary analysis identifies all potential coverage points and their relationships, enabling the system to make informed decisions about when to add or remove instrumentation code during the fuzzing process without compromising vulnerability detection.

Inventive Principle:
Principle #10Preliminary action

3Reliability

If coverage-guided fuzzing is designed for C/C++ languages, then fuzzing effectiveness for these languages is improved, but applicability to other programming languages such as Java is limited

Engineering Contradiction:
Improvefuzzing effectivenessVSAvoidprogramming language applicability
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

The system employs a language-agnostic control flow graph representation that can model the execution structure of programs written in different programming languages. The coverage map and instrumentation mechanisms are designed to work with the fundamental control flow concepts that exist across multiple languages, enabling the same fuzzing engine to effectively analyze C/C++, Java, and other languages with different memory management and execution models.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS12602311B2Method, device, system, and computer program for coverage-guided software fuzzing
Publication Date: 2026.04.14 SAMSUNG SDS CO LTD
  • US12602311B2 patent drawing
  • US12602311B2 patent drawing
  • US12602311B2 patent drawing

AI summary

The present disclosure relates to coverage-guided software fuzzing. A method includes performing a coverage-guided fuzzing test by using an instrumentation code inserted into points of a program under test, the method including: calculating an executed coverage according to which the instrumentation code is executed while inputting a test input value into an execution of the program under test; calculating a dormant coverage indicating each point having instrumentation code that has not been executed within a range of a reference number of times of the points, wherein the reference numbers of times are determined with regard to the respective points while determining whether the instrumentation code has been executed by the execution of the program under test on the test input value; and updating the program under test by adding or removing the instrumentation code on the basis of the dormant.