Static Analysis of Framework-Based Applications via Synthetic Request Transformation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Static analysis techniques are ineffective in detecting defects such as security vulnerabilities and memory leaks in framework-based applications that utilize dynamic language constructs, as the behavior of these constructs only becomes evident at runtime, making it difficult to statically analyze method calls when method names are based on strings manipulated at runtime.

Innovation Solution

A method and system that extract framework object registrations and requests from application code, derive synthetic requests, transform the code by replacing original requests with synthetic ones, and perform static analysis on the transformed code to detect defects like taint flows and security-sensitive operations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If static analysis techniques are applied to framework-based applications using dynamic language constructs, then analysis coverage is attempted, but detection effectiveness deteriorates because behavior only becomes evident at runtime

Engineering Contradiction:
Improvedefect detection effectivenessVSAvoidanalysis difficulty
Core Design Contradiction:
Measurement precisionVSDifficulty of detecting and measuring

Solution Approach 1:

The patent performs preliminary actions by extracting framework object registrations and requests from application code before static analysis, transforming the code to replace dynamic requests with synthetic requests that expose implicit flows. This preliminary transformation enables subsequent static analysis to effectively detect defects that would otherwise only be evident at runtime.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent introduces an intermediary transformation process that acts as a bridge between the original framework-based code and static analysis. By deriving synthetic requests from framework registrations and replacing original requests, the transformation creates an intermediate representation that makes implicit framework flows explicit and analyzable by static analysis tools.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If dynamic language constructs are used in framework-based applications, then flexibility and inversion of control are achieved, but static analysis capability deteriorates because method names are based on strings manipulated at runtime

Engineering Contradiction:
Improveframework flexibilityVSAvoidstatic analysis reliability
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The patent creates synthetic requests as copies of the original dynamic requests, but in a form that is suitable for static analysis. By copying the request structure and replacing it with a version that uses the framework object registration information, the patent preserves the original dynamic behavior while creating an analyzable representation for defect detection.

Inventive Principle:
Principle #26Copying

3Measurement precision

If code transformation is performed to replace requests with synthetic requests, then defect detection capability is improved, but processing complexity increases

Engineering Contradiction:
Improvedefect detection precisionVSAvoidprocessing complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent segments the analysis process into distinct phases: extracting framework object registrations, extracting requests, deriving synthetic requests, transforming code by replacing requests, and performing static analysis. This segmentation breaks down the complex task into manageable steps, making the overall process more tractable and systematic.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS11106564B2Deframeworking for static program analysis
Publication Date: 2021.08.31 ORACLE INT CORP
  • US11106564B2 patent drawing
  • US11106564B2 patent drawing
  • US11106564B2 patent drawing

AI summary

A method for detecting a defect may include extracting, from application code, a registration of a framework object and a request for the framework object, deriving a synthetic request using the registration and the request, transforming the application code by replacing, by a computer processor, the request with the synthetic request, and detecting the defect by performing a static analysis on the transformed application code.