Floating-Point Memory Safety Analysis via Static and Symbolic Execution

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Whitebox fuzzing techniques are inadequate for efficiently analyzing and solving floating-point instructions, leading to inefficiencies and potential path explosion issues, especially as constraints become more complex.

Innovation Solution

A combination of lightweight local path-insensitive static analysis and symbolic execution is employed to identify and evaluate floating-point instructions and conditional statements, determining memory safety by injecting symbolic values and monitoring their usage in memory address calculations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If whitebox fuzzing techniques are used to analyze floating-point instructions, then security testing capability is improved, but analysis efficiency deteriorates and path explosion issues occur

Engineering Contradiction:
Improvesecurity testing capabilityVSAvoidanalysis efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent segments the analysis into two distinct phases: a lightweight static analysis phase that performs path-insensitive analysis to compute sets of memory addresses and registers, and a symbolic execution phase that focuses only on relevant paths. This segmentation avoids the path explosion problem by not attempting to analyze all possible execution paths in detail, thereby improving analysis efficiency while maintaining security testing capability.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies partial action by performing path-insensitive static analysis that computes over-approximations of memory addresses and registers without fully exploring all execution paths. This partial analysis provides sufficient information for security testing while avoiding the computational burden of complete path exploration, thus maintaining reliability while improving productivity.

Inventive Principle:
Principle #16Partial or excessive action

2Adaptability or versatility

If existing analysis capabilities are extended to handle floating-point instructions, then analysis coverage is improved, but path explosion issues worsen

Engineering Contradiction:
Improveanalysis coverageVSAvoidpath explosion complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent separates the analysis into a static phase that handles floating-point instructions through path-insensitive analysis, computing sets of possible memory addresses and registers, and a symbolic execution phase that handles control flow. This segmentation allows the system to adapt to floating-point instructions without encountering path explosion, as the static phase provides sufficient information without exploring all paths.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary static analysis phase that computes sets of memory addresses and registers before symbolic execution. This intermediary analysis provides summarized information that guides the symbolic execution, allowing the system to handle floating-point instructions effectively without the complexity of path explosion.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Measurement precision

If path-sensitive symbolic execution is performed on floating-point instructions, then precision is improved, but computational complexity increases

Engineering Contradiction:
Improveanalysis precisionVSAvoidcomputational complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent segments the analysis precision requirements: the static analysis phase provides path-insensitive over-approximations for memory addresses and registers, while symbolic execution provides precise path-sensitive analysis only where needed. This segmentation achieves sufficient precision for security testing without the full computational complexity of path-sensitive analysis throughout.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies partial precision by using path-insensitive static analysis that computes over-approximations rather than exact path-sensitive information. This partial precision is sufficient for detecting security vulnerabilities while avoiding the high computational complexity of complete path-sensitive analysis.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS8782625B2Memory safety of floating-point computations
Publication Date: 2014.07.15 MICROSOFT TECHNOLOGY LICENSING LLC
  • US8782625B2 patent drawing
  • US8782625B2 patent drawing
  • US8782625B2 patent drawing

AI summary

Concepts and technologies are described herein for determining memory safety of floating-point computations. The concepts and technologies described herein analyze code to determine if any floating-point computations exist in the code, and if so, if the floating-point computations are memory safe. The analysis can include identifying floating-point instructions and conditional statements in the code. The code can be symbolically executed, and behavior of the floating-point instructions and the conditional statements can be monitored to determine if a floating point calculation is ever involved in computation of any memory address during the execution of the code.