Concurrency Vulnerability Detection via Greybox Fuzzing and Priority Test Cases
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Concurrency vulnerabilities in concurrent programs are difficult to detect and reproduce due to their dependence on scheduling policies and external environments, with existing fuzzing techniques like coverage-guided greybox fuzzing having limited impact on discovering such bugs.
Innovation Solution
Instrumenting read and write access to shared memory and using a greybox fuzzer to identify priority test cases, which are then analyzed for racing pairs, and sent to a concurrency verification module for testing with various scheduling policies to identify concurrency vulnerabilities.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If coverage-guided greybox fuzzing is used to test concurrent programs, then general bug detection capability is improved, but effectiveness in discovering concurrency bugs remains limited
Solution Approach 1:
The patent introduces a concurrency verification module as an intermediary between the greybox fuzzer and the testing process. This module receives test cases from the fuzzer, analyzes them for racing pairs, and selectively forwards priority test cases to the concurrency testing engine, thereby improving detection effectiveness while reducing the overall number of test cases that need full concurrency verification
Solution Approach 2:
The patent replaces the traditional mechanical approach of exhaustive concurrency testing with a smarter analysis mechanism. The concurrency verification module uses static analysis to identify racing pairs and determine test case priorities, substituting brute-force testing with intelligent pre-screening that maintains reliability while improving productivity
2Measurement precision
If all test cases are sent to concurrency verification module for exhaustive testing, then detection thoroughness is improved, but testing time and resources increase significantly
Solution Approach 1:
The patent applies partial action by not sending all test cases to the concurrency verification module. Instead, it performs partial verification through racing pair analysis and sends only the necessary subset of priority test cases, achieving sufficient detection thoroughness without the excessive time cost of testing every single test case exhaustively
Solution Approach 2:
The concurrency verification module performs preliminary analysis of test cases to identify racing pairs and determine priorities before full concurrency verification. This preliminary action filters out low-priority test cases early, preventing unnecessary time consumption in the main verification process while maintaining detection thoroughness for critical cases
3Ease of manufacture
If random fuzzing is used without prioritization, then test case generation is simple, but effectiveness in finding concurrency bugs is reduced
Solution Approach 1:
The patent implements feedback mechanisms where the concurrency verification module analyzes test case outcomes and racing pair information, then feeds this information back to prioritize future test case generation. This feedback loop maintains the simplicity of random fuzzing while systematically improving effectiveness by directing attention to high-priority areas based on accumulated knowledge
Data Source
AI summary
A method of detecting concurrency vulnerabilities is provided. A method may include instrumenting read and write access for a program to a shared memory. The method may also include identifying, via a greybox fuzzer, a test case for the program. Further, the method may include analyzing, via the greybox fuzzer and based on the test case, two or more branches of the program that include sets of racing pairs to determine if the test case is a priority test case. In response to the test case being a priority test case, the method may include providing the test case from the greybox fuzzer to a concurrency verification module. The method may also include testing, via the concurrency verification module, the test case with one or more scheduling policies to identify one or more concurrency vulnerabilities.


