Vulnerability Flow Graphs for Complex Software Analysis

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current debugging and testing tools are ineffective in detecting subtle vulnerabilities in software, middleware, and operating systems, particularly those arising from complex interactions across multiple components and locations, which can be exploited by hackers even without access to source code or system designs.

Innovation Solution

The method involves generating Vulnerability Flow Graphs (VFGs) to analyze vulnerabilities across components and systems, using usage assumption templates and rich execution traces to detect and mitigate vulnerabilities through automated test generation and code modification, including the generation of vulnerability-covering code or diverse, functionally-equivalent code.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If traditional debugging and testing tools are used to detect vulnerabilities, then the process is simple and straightforward, but they fail to detect subtle vulnerabilities arising from complex interactions across multiple components

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

Solution Approach 1:

The patent segments the vulnerability analysis process into distinct components: vulnerability flow graph generation, usage assumption template application, and execution trace analysis. This segmentation allows each component to specialize in detecting specific types of vulnerabilities while working together to comprehensively analyze complex interactions across multiple software components.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces vulnerability flow graphs as an intermediary representation that bridges the gap between raw execution traces and vulnerability detection. These graphs serve as a mediator that captures the flow of data and control across component boundaries, enabling the detection of subtle vulnerabilities that traditional tools miss.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Measurement precision

If ad hoc vulnerability discovery schemes are applied to each vulnerability type and location, then individual vulnerabilities can be identified, but the approach is incapable of detecting vulnerabilities arising from interaction flow of multiple types and locations

Engineering Contradiction:
Improvevulnerability detection accuracyVSAvoidmulti-vulnerability detection capability
Core Design Contradiction:
Measurement precisionVSAdaptability or versatility

Solution Approach 1:

The patent creates a universal vulnerability analysis framework that can detect multiple types of vulnerabilities across different locations simultaneously. The vulnerability flow graph approach is designed to be versatile, handling various vulnerability types (buffer overflows, format strings, use-after-free) through a unified methodology rather than separate ad hoc schemes.

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

Solution Approach 2:

The patent merges multiple vulnerability detection capabilities into a single integrated system. By combining usage assumption templates, execution trace analysis, and vulnerability flow graph generation, the system achieves both high detection accuracy and the ability to handle multiple vulnerability types and locations concurrently.

Inventive Principle:
Principle #5Merging (Combining)

3Measurement precision

If manual design and code reviews are performed to identify vulnerabilities, then many classes of vulnerabilities can be detected, but other classes of vulnerabilities pass through undetected and the process is time-consuming

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

Solution Approach 1:

The patent implements a self-service vulnerability detection system that automatically analyzes software components without requiring manual intervention. The system uses execution traces and usage assumption templates to autonomously generate vulnerability flow graphs and identify vulnerabilities, dramatically reducing the time investment while maintaining comprehensive detection coverage.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The patent incorporates feedback mechanisms where execution traces provide real-time information about actual runtime behavior, which feeds back into the vulnerability flow graph generation process. This feedback loop enables the system to adapt to actual program execution patterns and detect vulnerabilities that static analysis alone might miss, achieving comprehensive coverage efficiently.

Inventive Principle:
Principle #23Feedback

4Productivity

If testing focuses on generating inputs and checking outputs, then the testing process is efficient, but ephemeral vulnerabilities are often overlooked

Engineering Contradiction:
Improvetesting efficiencyVSAvoidvulnerability detection sensitivity
Core Design Contradiction:
ProductivityVSMeasurement precision

Solution Approach 1:

The patent adds a new dimension to traditional input-output testing by incorporating usage assumption templates that model expected runtime behavior. This additional dimension allows the system to detect ephemeral vulnerabilities that occur during intermediate execution states, not just at input-output boundaries, while maintaining testing efficiency through automated analysis.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

Data Source

PatentUS8407800B2Method for software vulnerability flow analysis, generation of vulnerability-covering code, and multi-generation of functionally-equivalent code
Publication Date: 2013.03.26 HONEYWELL INTERNATIONAL INC
  • US8407800B2 patent drawing
  • US8407800B2 patent drawing
  • US8407800B2 patent drawing

AI summary

A method for detecting, analyzing, and mitigating vulnerabilities in software is provided. The method includes determining whether one or more vulnerabilities are present in one or more target software components, determining whether any detected vulnerabilities are fixable, and fixing the detected vulnerabilities that are fixable in code or in associated models used to generate code. A vulnerability-covering code is generated when one or more of the detected vulnerabilities are not fixable. A determination is then made whether there are any remaining vulnerabilities in the vulnerability-covering code. A vulnerability-aware diverse code is generated when there are one or more remaining vulnerabilities to obfuscate the remaining vulnerabilities.