Vulnerability Detection via Code Dependency Analysis

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current methods for detecting software vulnerabilities, especially those involving taint flow analysis, face challenges in identifying malicious behavior due to the complexity of large codebases and the difficulty in distinguishing relevant from irrelevant code instructions, often resulting in false positives or missed vulnerabilities.

Innovation Solution

The approach involves using dependency analysis to isolate specific instruction types associated with vulnerabilities, eliminating irrelevant instructions, and reducing the code to a smaller, easily inspectable segment that retains the same vulnerabilities as the original code, allowing for more effective detection by human or automated processes.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If static analysis is performed on the entire codebase to detect vulnerabilities, then comprehensive vulnerability detection is achieved, but the complexity and time required for analysis increases significantly

Engineering Contradiction:
Improvevulnerability detection completenessVSAvoidanalysis complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent segments the codebase by identifying and isolating specific instruction types (source, sink, and intermediate instructions) related to vulnerability detection. This segmentation allows the analysis to focus only on relevant code portions rather than the entire codebase, reducing analysis complexity while maintaining detection completeness.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent extracts and eliminates irrelevant instructions from the codebase, keeping only the essential instructions (source, sink, and intermediate) needed for vulnerability detection. This extraction process reduces the volume of code requiring analysis while preserving all vulnerability-related information.

Inventive Principle:
Principle #2Taking out (Extraction)

2Loss of time

If dependency analysis is used to reduce code to relevant instructions only, then analysis time is reduced, but the risk of removing vulnerability-related instructions increases

Engineering Contradiction:
Improveanalysis timeVSAvoidvulnerability detection accuracy
Core Design Contradiction:
Loss of timeVSReliability

Solution Approach 1:

The patent applies local quality by differentiating between relevant and irrelevant instructions based on their specific roles in vulnerability detection. Source instructions (data input), sink instructions (data output), and intermediate instructions (sanitization operations) are identified and preserved, while other instructions are eliminated. This localized approach ensures that only necessary instructions are retained, maintaining accuracy while reducing analysis time.

Inventive Principle:
Principle #3Local quality

3Measurement precision

If manual inspection of reduced code segments is performed, then detection accuracy improves, but productivity decreases due to manual effort required

Engineering Contradiction:
Improvedetection accuracyVSAvoidinspection throughput
Core Design Contradiction:
Measurement precisionVSProductivity

Solution Approach 1:

The patent creates a simplified copy or representation of the codebase that contains only the essential instructions relevant to vulnerability detection. This reduced representation maintains the critical vulnerability information while being sufficiently small for efficient manual inspection, thereby balancing accuracy with productivity.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS11880470B2System and method for vulnerability detection in computer code
Publication Date: 2024.01.23 WHITESOURCE LTD
  • US11880470B2 patent drawing
  • US11880470B2 patent drawing
  • US11880470B2 patent drawing

AI summary

A method, computerized apparatus and computer program product, the method comprising: obtaining user code; obtaining an indication of at least one vulnerability, the vulnerability associated with one or more sets comprising at least a first instruction type and a second instruction type; scanning the code using dependency analysis, to obtain for one set: one or more first instructions of the first instruction type, one or more second instructions of the second instruction type, and further instructions associated with entities relevant to the first instruction and the second instruction; eliminating instructions other than the first instruction, the second instruction and one of the further instructions, thereby obtaining a collection of instructions that behaves differently from the user code; and providing the collection of instructions for vulnerability detection.