Automated Vulnerability Detection via Symbolic Execution

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current methods for analyzing software vulnerabilities struggle to balance computation time, accuracy, and human comprehensibility, making it difficult to determine if software contains malware and ensure it behaves correctly, especially in edge cases.

Innovation Solution

A configurable tool that disassembles programs, generates function call trees, transforms statements into logical equations, and uses Dijkstra's weakest preconditions to determine preconditions that guarantee desired post-conditions, employing automated solvers to identify and exploit vulnerabilities such as buffer overflows and indirect jumps.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If traditional vulnerability analysis methods are used, then human comprehensibility is improved, but computation time and accuracy are insufficient

Engineering Contradiction:
Improvevulnerability detection accuracyVSAvoidcomputation time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent replaces manual vulnerability analysis with an automated symbolic execution system that uses computer-generated test cases and formal verification methods. The system automatically transforms program code into logical representations, executes them symbolically to explore all possible execution paths, and uses theorem provers to verify security properties, thereby achieving high accuracy without requiring human analysts to manually trace every possibility.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Solution Approach 2:

The system changes the fundamental parameters of analysis by transitioning from static code review to dynamic symbolic execution. It transforms program code into intermediate representations, systematically varies input parameters across all possible values, and evaluates security properties for each execution path, enabling comprehensive coverage of edge cases that would be time-consuming for manual analysis.

Inventive Principle:
Principle #35Parameter changes

2Reliability

If comprehensive program analysis is performed to detect all vulnerabilities, then detection accuracy is improved, but analysis time increases significantly

Engineering Contradiction:
Improvesoftware security assuranceVSAvoidanalysis speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent segments the vulnerability analysis process into distinct phases: parsing program code into intermediate representations, generating symbolic execution paths, executing them with specific inputs, and verifying security properties. This segmentation allows each phase to be optimized independently and enables parallel processing of multiple analysis tasks, improving overall productivity while maintaining comprehensive coverage.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system performs preliminary actions by pre-processing program code into standardized intermediate representations and pre-defining security properties to be verified. It also pre-generates test cases and execution paths before actual vulnerability detection begins, so that when analysis starts, the framework is already prepared to systematically explore all possibilities without requiring time-consuming on-the-fly transformations.

Inventive Principle:
Principle #10Preliminary action

3Productivity

If automated analysis tools are used to improve speed, then productivity is improved, but human comprehension of results deteriorates

Engineering Contradiction:
Improveanalysis throughputVSAvoidresult interpretability
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The patent implements feedback mechanisms that automatically interpret and explain analysis results in terms understandable to human analysts. The system provides detailed reports showing which security properties were verified, which execution paths were explored, and which vulnerabilities were detected, along with the specific inputs that triggered each finding. This feedback loop allows automated high-throughput analysis while maintaining transparent, interpretable results that human operators can readily comprehend and act upon.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS9507945B2Method and apparatus for automated vulnerability detection
Publication Date: 2016.11.29 JOHNS HOPKINS UNIVERSITY
  • US9507945B2 patent drawing
  • US9507945B2 patent drawing
  • US9507945B2 patent drawing

AI summary

A method executable via operation of configured processing circuitry to identify vulnerabilities in program code may include receiving a program and employing a disassembler to disassemble the program, generating a function call tree for the program based on disassembly of the program, receiving an indication of a post condition for which analysis of the program is desired, transforming program statements into logical equations, simplifying the logical equations, propagating post conditions backwards via Dijkstra's weakest precondition variant, analyzing aliases and processing loops to generate a precondition, and using an automated solver to determine whether the precondition is realizable and, if so, providing program inputs required to realize the precondition.