Dependency Call Graph Stitching for Safer Package Upgrades
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Developers face challenges in determining which version of a third-party component to upgrade to, as newer versions may fix vulnerabilities but introduce other issues, such as breaking changes, making it time-consuming to review multiple versions for open-source libraries maintained by third parties.
Innovation Solution
A computer system generates partial call graphs for dependencies, stitches them together to create a complete call graph, determines upgrade candidates, assesses risk-benefit scores, and prioritizes candidates based on issues, vulnerabilities, and severity to recommend the best version for upgrade.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If developers review multiple newer versions of third-party components to determine the best upgrade, then the vulnerability can be fixed, but the time required to review and select the appropriate version increases significantly
Solution Approach 1:
The patent segments the call graph analysis into partial call graphs for individual dependencies, which are then stitched together to form a complete call graph. This segmentation enables focused analysis on specific dependency areas while maintaining overall context, significantly reducing the time required to evaluate upgrade candidates compared to reviewing all versions comprehensively.
Solution Approach 2:
The system performs preliminary analysis by generating partial call graphs for dependencies before determining upgrade candidates. By pre-computing and caching these partial call graphs, the system prepares essential information in advance, enabling faster evaluation of multiple upgrade versions without requiring developers to manually review each version's impact.
2Reliability
If developers manually review each newer version of a component, then they can identify breaking changes and functional issues, but the complexity of the review process increases with the number of versions
Solution Approach 1:
The patent introduces an intermediary analysis system that automatically generates partial call graphs and stitches them to create complete call graphs. This intermediary tool mediates between the developer's need to ensure functional integrity and the complexity of manually reviewing multiple versions, by automatically analyzing and comparing call graphs across versions to identify breaking changes and functional issues.
Solution Approach 2:
The system replaces the mechanical manual review process with automated call graph analysis. Instead of developers manually comparing each version's functionality, the system automatically generates, stitches, and analyzes call graphs to identify breaking changes, substituting the manual mechanical process with an automated analytical system.
3Reliability
If the system analyzes all dependencies to determine upgrade candidates, then comprehensive vulnerability assessment is achieved, but memory consumption increases in resource-limited environments
Solution Approach 1:
The patent divides the complete call graph into partial call graphs for individual dependencies. By generating and storing only the necessary partial call graphs in a cache rather than loading and analyzing the complete call graph at once, the system achieves comprehensive security assessment while reducing peak memory consumption in resource-limited environments.
Solution Approach 2:
The system performs preliminary action by generating and caching partial call graphs before performing comprehensive vulnerability assessment. This pre-computation and caching of essential dependency information enables thorough security analysis without requiring all data to be loaded into memory simultaneously, thus managing memory usage effectively.
Data Source
AI summary
A package in a software project is selected and dependencies determined. A partial call graph for individual dependencies is created and stored in a cache to create partial call graphs that are stitched together to create a complete call graph of the package. A set of upgrade candidates for individual dependencies is determined and an upgrade candidate is selected from the set. Based at least in part on the complete call graph, issues associated with upgrading the package to use the upgrade candidate are determined and a risk-benefit score associated with each upgrade candidate determined based on the issues, the number of vulnerabilities addressed, and a severity of the vulnerabilities addressed by upgrading the package to use the upgrade candidate. The set of upgrade candidates is prioritized based on the associated risk-benefit score to create a prioritized set and provided to a developer associated with the package.


