Binary Component Origin Identification for Vulnerability Analysis

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing static analyzers struggle to identify and distinguish between developer-provided and third-party components in software applications from binary files, leading to incomplete and erroneous vulnerability analysis, especially when source code is unavailable and dynamic analysis is not feasible.

Innovation Solution

A method that programmatically analyzes binary files without loading them in an execution environment, by reading and parsing binary files to determine component paths, identifying primary and secondary components, and storing their origins to differentiate between developer-provided and third-party components.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If dynamic analysis is used to identify software components, then complete component identification is achieved, but the system becomes vulnerable to malicious code and requires licenses to execute certain components

Engineering Contradiction:
Improvecomponent identification accuracyVSAvoidvulnerability to malicious code
Core Design Contradiction:
Measurement precisionVSObject-affected harmful factors

Solution Approach 1:

The patent uses an intermediary approach by analyzing binary files through a controlled static analysis environment rather than directly executing them. The system extracts component information from binary metadata and symbols without loading them into a runtime environment, thus avoiding exposure to malicious code while still achieving comprehensive component identification.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent creates a virtual representation of the software components by extracting information from binary files without actual execution. It generates a model of the software architecture including class hierarchies, method relationships, and component origins from binary metadata, allowing analysis of component identification accuracy without executing the original code.

Inventive Principle:
Principle #26Copying

2Object-affected harmful factors

If static analysis is used to analyze binary files, then the system avoids vulnerability to malicious code, but it cannot distinguish between developer-provided and third-party components

Engineering Contradiction:
Improvevulnerability to malicious codeVSAvoidcomponent origin information
Core Design Contradiction:
Object-affected harmful factorsVSLoss of information

Solution Approach 1:

The patent performs preliminary action by extracting and analyzing binary file metadata, symbols, and other embedded information before any execution or further processing. It proactively identifies component origins by examining compilation timestamps, package names, and source file paths embedded in the binary structure, preserving component origin information that would otherwise be lost.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent transitions from traditional single-dimension static analysis to multi-dimensional analysis by examining multiple aspects of binary files simultaneously: metadata attributes, symbol tables, class hierarchy relationships, and path structures. This dimensional expansion enables differentiation between developer-provided and third-party components through patterns in their organizational structure and metadata characteristics.

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

3Quantity of substance

If all components are analyzed without distinction, then comprehensive coverage is achieved, but the analysis is not focused on developer-supplied components

Engineering Contradiction:
Improvecomponent coverageVSAvoidanalysis efficiency
Core Design Contradiction:
Quantity of substanceVSProductivity

Solution Approach 1:

The patent segments the software component landscape into distinct categories: developer-provided components, third-party components, and mixed components. It implements separate analysis pipelines for each segment, applying different analysis depths and techniques appropriate to each category, thereby maintaining comprehensive coverage while optimizing analysis efficiency for developer-supplied components.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies local quality by tailoring the analysis approach to specific component types and origins. Developer-provided components receive more intensive analysis with deeper inspection of source code patterns and compilation characteristics, while third-party components are analyzed with focused attention on known vulnerability patterns and package metadata, optimizing overall analysis productivity.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS10229273B2Identifying components for static analysis of software applications
Publication Date: 2019.03.12 VERACODE INC
  • US10229273B2 patent drawing
  • US10229273B2 patent drawing
  • US10229273B2 patent drawing

AI summary

In a system for determining components of a software application from binary code thereof, one or more binary files are read without loading any component/object in the files in an execution environment that can execute the software application. A component in one of the files, designated as a primary component, is visited to identify a path specifying origin of a secondary component that is associated with the primary component, and the identified path is stored. Analysis of the path can indicate whether the secondary component is provided by the developer of the software application or by a different entity.