Call Graph Stitching for Security-Aware Package Upgrades

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Developers face challenges in efficiently upgrading third-party components to address security vulnerabilities while minimizing the introduction of new issues, particularly when multiple versions are available, as conventional methods are time-consuming and resource-intensive.

Innovation Solution

A system is developed to create a complete call graph by stitching partial call graphs, determine upgrade candidates, and assign a risk-benefit score to prioritize upgrades, reducing the need for manual review and optimizing resource usage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If developers manually review multiple newer versions of third-party components to determine safe upgrades, then the reliability of the upgrade decision is improved, but the time and effort required increases significantly

Engineering Contradiction:
Improveupgrade decision reliabilityVSAvoidtime for manual review
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system performs preliminary analysis by automatically generating call graphs and evaluating upgrade candidates before the developer makes a decision. It pre-determines which versions fix vulnerabilities and which introduce breaking changes, so the developer only needs to review the pre-filtered safe upgrade options rather than manually analyzing all versions.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system provides self-service by automatically analyzing the codebase, generating call graphs, identifying vulnerable functions, and evaluating multiple upgrade candidates. It serves itself by performing the complex analysis work that would otherwise require manual developer intervention, presenting only the most relevant upgrade options.

Inventive Principle:
Principle #25Self-service

2Measurement precision

If the system analyzes all available upgrade candidates thoroughly, then the accuracy of vulnerability assessment is improved, but the computational resource consumption increases

Engineering Contradiction:
Improvevulnerability assessment accuracyVSAvoidcomputational resource consumption
Core Design Contradiction:
Measurement precisionVSUse of energy by moving object

Solution Approach 1:

The system segments the analysis process into distinct phases: first generating the call graph structure, then identifying vulnerable functions, then evaluating upgrade candidates. It segments the upgrade candidate evaluation by prioritizing versions based on vulnerability fixes and breaking changes, so not all candidates are analyzed with equal depth, optimizing resource usage while maintaining accuracy.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system applies partial action by analyzing only the most relevant upgrade candidates rather than all possible versions. It uses heuristics to identify which versions are most likely to fix vulnerabilities while introducing minimal breaking changes, focusing computational resources on these high-value candidates rather than exhaustively analyzing every version.

Inventive Principle:
Principle #16Partial or excessive action

3Reliability

If the system generates complete call graphs for all dependencies, then the completeness of vulnerability detection is improved, but the memory usage and processing time increases

Engineering Contradiction:
Improvevulnerability detection completenessVSAvoidmemory usage
Core Design Contradiction:
ReliabilityVSVolume of stationary object

Solution Approach 1:

The system segments the call graph generation by processing dependencies individually and only generating call graphs for dependencies that are actually used in the codebase. It segments the analysis by focusing only on the subset of dependencies relevant to the current codebase rather than generating complete call graphs for all possible dependencies, reducing memory usage while maintaining detection completeness for relevant vulnerabilities.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS12462043B1Creating and using call graphs to select an update
Publication Date: 2025.11.04 ENDOR LABS INC
  • US12462043B1 patent drawing
  • US12462043B1 patent drawing
  • US12462043B1 patent drawing

AI summary

In some implementations, a set of dependencies in a selected package are determined. Each dependency in the set of dependencies is used to create a set of partial call graphs that are stitched together to create a complete call graph of the package. A subset of upgrade candidates may be selected from a set of upgrade candidates for a particular dependency. Determining issues associated with upgrading the package to use an upgrade candidate includes determining security vulnerabilities based on the complete call graph, determining a number of vulnerabilities addressed by upgrading the package to use the upgrade candidate, and determining a severity of vulnerabilities addressed by upgrading the package to use the upgrade candidate. A risk-benefit score associated with each of the upgrade candidates is determined to create a subset of upgrade candidates prioritized based on the risk-benefit score. The prioritized subset is provided to a developer associated with the package.