Symbolic Analysis of Software Control Flow Graphs for Vulnerability Detection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for analyzing software programs for security vulnerabilities and bugs are limited, especially when full source code is not available, and there is a need for more efficient symbolic analysis techniques.

Innovation Solution

The method involves constructing a control flow graph (CFG) for a software program procedure, simplifying it to a single node representing the procedure as a function from input to output machine state, and comparing this function to a rule set to identify vulnerabilities based on machine state effects.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If symbolic execution maintains multiple symbolic states for each branch as directed by the user, then vulnerability detection capability is improved, but analysis complexity and computational resources increase significantly

Engineering Contradiction:
Improvevulnerability detection capabilityVSAvoidanalysis complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent segments the control flow graph into basic blocks and represents each block as a separate function transformation. This segmentation allows the analysis to process the program in manageable units rather than maintaining all symbolic states simultaneously, reducing computational complexity while preserving vulnerability detection capability through systematic composition of block functions.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary representation where each basic block is transformed into a function that maps input machine states to output machine states. This intermediary functional representation simplifies the composition and analysis of control flow paths, making the overall analysis more manageable while maintaining the ability to detect vulnerabilities through rule matching.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Measurement precision

If full source code is required for security analysis, then analysis accuracy is improved, but applicability to compiled binaries deteriorates

Engineering Contradiction:
Improveanalysis accuracyVSAvoidapplicability to compiled binaries
Core Design Contradiction:
Measurement precisionVSAdaptability or versatility

Solution Approach 1:

The patent creates a symbolic copy or representation of the compiled binary's control flow and machine state transformations without requiring the original source code. By constructing a control flow graph from the compiled binary and representing basic blocks as functional transformations, the system achieves source code-independent analysis that maintains accuracy through systematic symbolic execution and rule-based vulnerability detection.

Inventive Principle:
Principle #26Copying

3Reliability

If control flow graph is constructed with detailed basic blocks, then analysis completeness is improved, but processing time and computational resources increase

Engineering Contradiction:
Improveanalysis completenessVSAvoidprocessing time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent segments the control flow graph into basic blocks but processes them through efficient functional composition rather than exhaustive exploration. Each basic block is represented as a function that can be composed with other block functions, enabling systematic analysis of all reachable states without the exponential complexity that would result from maintaining complete symbolic states for every possible execution path.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent changes the representation parameter from maintaining complete symbolic states to using functional transformations. This parameter change allows the system to process control flow graphs efficiently by composing simple block functions rather than manipulating complex symbolic state expressions, significantly reducing processing time while maintaining analysis completeness through systematic rule application.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS12277230B2Method and device for symbolic analysis of a software program
Publication Date: 2025.04.15 BLACKBERRY LTD
  • US12277230B2 patent drawing
  • US12277230B2 patent drawing
  • US12277230B2 patent drawing

AI summary

A method for symbolic analysis of a software program is described. The method comprises constructing a control flow graph (CFG), for a software program procedure, the CFG comprising nodes representing basic blocks reachable within the software program procedure, the basic blocks represented as respective functions from a first machine state on entry to a said basic block to a second machine state on exit from that basic block. The method further describes simplifying the CFG to a single node representing the software program procedure as a function from an input machine state on entry to the software program procedure to an output machine state on exit from the software program procedure, comparing said function to a rule set identifying vulnerabilities based on effects on the machine state; and determining a vulnerability within the software program procedure based on the comparing.