Vulnerability Identification in Open Source Code via Dependency Graphs

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Identifying and addressing vulnerabilities in open source code used within a user's codebase is challenging, especially in complex projects, where it is unclear which open source components are used and whether they contain vulnerabilities, and there is a risk of legal and security issues due to the need to share modified code or expose proprietary information.

Innovation Solution

A method and system that creates a dependency graph of the user's code using static analysis, identifying reachable open source components with vulnerabilities, and backtracking to their roots, allowing for the isolation of vulnerable components without exposing the user's code, using a server with access to known vulnerabilities, and iteratively refining the graph to lower-level components.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If static analysis is used to create a dependency graph of the user's code, then vulnerability identification accuracy is improved, but the complexity of the analysis process increases

Engineering Contradiction:
Improvevulnerability identification accuracyVSAvoidanalysis process complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent segments the codebase into a dependency graph structure, breaking down the complex analysis task into manageable components (nodes and edges). This allows systematic traversal and analysis of individual components and their relationships, improving vulnerability identification accuracy while managing analysis complexity through structured decomposition.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary static analysis to construct the complete dependency graph before vulnerability scanning. By pre-processing the codebase to establish all component relationships in advance, the system enables more accurate and efficient vulnerability identification during the actual scanning phase, avoiding the need for complex real-time analysis.

Inventive Principle:
Principle #10Preliminary action

2Measurement precision

If the system backtracks to root components to isolate vulnerable open source components, then the precision of vulnerability localization is improved, but the time required for analysis increases

Engineering Contradiction:
Improvevulnerability localization precisionVSAvoidanalysis time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent pre-computes and stores the dependency graph structure including all paths from root components to leaf components before vulnerability analysis. When a vulnerability is detected, the system can quickly backtrack using the pre-established graph structure rather than performing exhaustive path analysis, thereby improving localization precision while minimizing additional time consumption.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent creates a computational model (dependency graph) that copies the structural relationships of the actual codebase. This model allows the system to perform backtracking and path analysis on the graph representation rather than the original code, significantly reducing the time required for vulnerability localization while maintaining precise identification of affected components.

Inventive Principle:
Principle #26Copying

3Reliability

If the system transmits dependency graph information to an external server, then vulnerability detection capability is improved, but the risk of exposing proprietary information increases

Engineering Contradiction:
Improvevulnerability detection capabilityVSAvoidinformation exposure risk
Core Design Contradiction:
ReliabilityVSObject-affected harmful factors

Solution Approach 1:

The patent extracts and transmits only the necessary dependency graph metadata to external servers for vulnerability matching, deliberately excluding sensitive source code and proprietary information. This selective extraction approach enables the system to leverage external vulnerability databases and analysis capabilities while minimizing the exposure of confidential information, as only structural relationship data is shared.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent introduces an intermediary processing layer that anonymizes and aggregates dependency graph information before transmission to external servers. This intermediary layer strips identifying details and transforms the data into a standardized format that preserves vulnerability detection capability while preventing the exposure of proprietary code structures and business logic.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Measurement precision

If the system iteratively refines the dependency graph to lower-level components, then the detail of vulnerability information is improved, but the computational resources required increase

Engineering Contradiction:
Improvevulnerability information detailVSAvoidcomputational resource consumption
Core Design Contradiction:
Measurement precisionVSUse of energy by moving object

Solution Approach 1:

The patent applies iterative refinement selectively to only those portions of the dependency graph that contain or are related to detected vulnerabilities. Instead of uniformly refining the entire graph to the lowest level, the system focuses computational resources on local areas of interest, thereby improving vulnerability information detail where needed while minimizing overall computational resource consumption.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent performs partial refinement of the dependency graph, stopping at the appropriate level of detail for each vulnerability case rather than always proceeding to the finest granularity. This partial action approach provides sufficient detail for effective vulnerability management while avoiding the excessive computational costs of complete fine-grained analysis across the entire codebase.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS10713364B2System and method for identifying vulnerabilities in code due to open source usage
Publication Date: 2020.07.14 WHITESOURCE LTD
  • US10713364B2 patent drawing
  • US10713364B2 patent drawing
  • US10713364B2 patent drawing

AI summary

A method, computerized apparatus and computer program product, the method comprising: obtaining computer code; determining from the computer code a collection of components reachable from the computer code; providing information about the components to a server; identifying by the server using information retrieved from a database, reachable components associated with the collection of components, which have stored vulnerabilities; determining from the computer code and the reachable components that have stored vulnerabilities, a collection of reachable finer resolution components; identifying, further components from the collection of reachable finer resolution components, which have stored vulnerabilities; and outputting information about the further components, wherein the computer code cannot be reconstructed from the information about the collection of components and the information about the finer resolution components.