Taint Perimeter Detection for Fuzzing Overhead Reduction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current code coverage techniques face inefficiencies due to runtime overhead and limitations in expanding code coverage, particularly in fuzz testing, where techniques rely on static input sets and expensive instrumentation, making it difficult to detect new code execution paths and improve fuzzing effectiveness over time.

Innovation Solution

A code coverage-based taint perimeter detection system that uses tainted data flow analysis to identify and monitor previously untested branches, employing software breakpoints only at runtime to detect novel code execution, thereby eliminating general runtime overhead and enhancing fuzzing efficiency by focusing on new code coverage induced by tainted inputs.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If code coverage tools use modified execution environment or execution instrumentation to instrument the entire binary code, then code coverage measurement is achieved, but runtime overhead increases

Engineering Contradiction:
Improvecode coverage measurementVSAvoidruntime overhead
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent segments the code coverage measurement process by dividing the binary code into basic blocks and identifying only the tainted branches that need monitoring. Instead of instrumenting the entire binary code, the system selectively instruments only the relevant tainted branch targets, significantly reducing runtime overhead while maintaining measurement capability.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies local quality by making different parts of the code undergo different treatment. Untainted code paths are left uninstrumented, while only tainted branch targets receive instrumentation. This selective approach ensures that measurement precision is maintained for critical paths without incurring overhead for the entire codebase.

Inventive Principle:
Principle #3Local quality

2Measurement precision

If smart fuzzing uses extensive input structure definition or expensive runtime instrumentation, then code coverage is enhanced, but engineering time and execution time increase significantly

Engineering Contradiction:
Improvecode coverageVSAvoidengineering time and execution time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent performs preliminary action by conducting static tainted data flow analysis before fuzzing to identify tainted branches and their targets. This pre-computation creates a perimeter set of branch targets that need monitoring, eliminating the need for extensive runtime instrumentation and input structure definitions during actual fuzzing execution.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent extracts only the essential information needed for fuzzing by identifying and isolating tainted branch targets from the entire codebase. Instead of using extensive input structure definitions or monitoring all code paths, the system extracts and monitors only the specific tainted branches that matter for security testing, reducing both engineering and execution time.

Inventive Principle:
Principle #2Taking out (Extraction)

3Ease of operation

If fuzzing uses static input sets, then test execution is simple, but it is difficult to detect new code execution paths and improve fuzzing effectiveness

Engineering Contradiction:
Improvetest execution simplicityVSAvoidnew code coverage detection
Core Design Contradiction:
Ease of operationVSMeasurement precision

Solution Approach 1:

The patent implements feedback by using software breakpoints at tainted branch targets to detect when new code paths are executed during fuzzing. When a breakpoint is triggered, the system records the new coverage information and uses it to guide subsequent fuzzing iterations, creating a feedback loop that continuously improves code coverage while maintaining simple test execution.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The patent introduces dynamics by making the fuzzing process adaptive based on detected code coverage. The system dynamically updates the set of monitored tainted branches as new code paths are discovered, allowing the fuzzing to evolve and improve effectiveness over time while starting from simple static input sets.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS8839203B2Code coverage-based taint perimeter detection
Publication Date: 2014.09.16 ZHIGU HLDG
  • US8839203B2 patent drawing
  • US8839203B2 patent drawing
  • US8839203B2 patent drawing

AI summary

A code coverage-based taint perimeter detection system and method for testing software code by determining code coverage and detecting new coverage of the code. Embodiments of the system and method perform tainted data flow analysis on execution traces of the code to determine tainted branch targets. The tainted branch targets may be filtered to remove any tainted branch targets that have already been covered. New coverage can be determined by monitoring the filtered tainted branch targets, which in some embodiments involves the use of software breakpoints that are automatically placed at the locations in the tainted branch targets at runtime. Embodiments of the system and method use an iterative process to ensure that only tainted branch targets that have not already been covered or tested are examined.