Skip to content

[P2] Data Flow Analysis Engine #234

Closed

Description

@mrveiss

Description

Track how data flows through the application to identify security issues, data leaks, and optimization opportunities.

Parent Epic: #217 - Advanced Code Intelligence

Technical Requirements

  • Variable tracking across functions
  • Taint analysis for security
  • Data transformation tracking
  • Sink and source identification

Tasks

  • Implement variable tracking
  • Build data flow graph
  • Add taint analysis
  • Track data transformations
  • Identify security vulnerabilities
  • Generate data flow reports

Acceptance Criteria

  • Tracks variables across functions
  • Identifies data sources and sinks
  • Detects potential security issues
  • Maps data transformations
  • Provides flow visualization

Security Focus

  • SQL injection risks
  • XSS vulnerabilities
  • Data exposure risks
  • Input validation gaps

Priority

P2 - Medium

Size

Large (1-2 weeks)

Activity

  1. mrveiss commented on Nov 30, 2025

    @mrveiss
    OwnerAuthor

    Starting implementation of Data Flow Analysis Engine.

    Implementation Plan

    1. Variable tracking from AST - Track variable definitions and uses
    2. Data flow graph - Build def-use chains and reaching definitions
    3. Taint analysis - Track tainted data from sources to sinks
    4. Security patterns - Identify SQL injection, XSS, data exposure
    5. API endpoints - Provide analysis via REST API

    Will create backend/api/analytics_dfa.py with full implementation.

  2. mrveiss commented on Nov 30, 2025

    @mrveiss
    OwnerAuthor

    Implementation Complete ✅

    Files Created/Modified

    • Created: backend/api/analytics_dfa.py (~900 lines) - Complete Data Flow Analysis Engine
    • Modified: backend/initialization/routers.py - Added router registration

    Features Implemented

    1. Variable Tracking

    • Tracks all variable definitions (assignments) with line/column info
    • Tracks all variable uses (reads) with context
    • Builds def-use chains linking definitions to their uses

    2. Data Flow Graph

    • DataFlowEdge: Represents data flow from source to target variable
    • Tracks transformations (assignment, concatenation, f-string)
    • Propagates taint through data flow edges

    3. Taint Analysis

    • TaintLevel: UNTAINTED, PARTIALLY_TAINTED, TAINTED, SANITIZED
    • Taint Sources: 25+ sources including:
      • User input (input, request.*, etc.)
      • File operations (open, read, etc.)
      • Database (fetchone, fetchall)
      • Network (socket, requests, urllib)
      • Environment variables
    • Taint Propagation: Automatic through assignments, concatenation, f-strings

    4. Security Vulnerability Detection

    • SQL Injection (CRITICAL): Direct string concatenation in execute()
    • Command Injection (CRITICAL/HIGH): Tainted data in subprocess/os.system
    • Code Injection (CRITICAL): eval/exec with user input
    • XSS (HIGH): Tainted data in render_template_string
    • Path Traversal (HIGH): Tainted data in file paths
    • Insecure Deserialization (CRITICAL): pickle.loads, yaml.load

    5. Sanitizer Recognition

    • Recognizes 15+ sanitizer functions (escape, int, float, etc.)
    • Updates taint level to SANITIZED when applied

    API Endpoints

    POST /api/dfa-analytics/dfa/analyze           - Analyze source code
    POST /api/dfa-analytics/dfa/analyze-file      - Analyze a Python file
    POST /api/dfa-analytics/dfa/vulnerabilities   - Get only vulnerabilities
    POST /api/dfa-analytics/dfa/taint-summary     - Get taint analysis summary
    GET  /api/dfa-analytics/dfa/sources           - List taint sources
    GET  /api/dfa-analytics/dfa/sinks             - List security sinks
    GET  /api/dfa-analytics/dfa/sanitizers        - List sanitizers
    GET  /api/dfa-analytics/dfa/health            - Health check
    

    Test Results

    ✅ Analyzed 5 scopes
    
    Function: vulnerable_sql
      Vulnerabilities: 1
        [CRITICAL] sql_injection - Line 11
        Recommendation: Use parameterized queries or an ORM
      Tainted variables: ['user_input', 'query']
    
    Function: vulnerable_command
      Vulnerabilities: 1
        [HIGH] command_injection - Line 18
        Recommendation: Use subprocess with list arguments, avoid shell=True
      Tainted variables: ['filename', 'cmd']
    
    Function: safe_sql
      Vulnerabilities: 0 (correctly identified as safe)
      Tainted variables: ['user_input']
    
    ✅ Total vulnerabilities detected: 2
    

    All requirements from Issue #234 have been implemented. The engine correctly:

    • Tracks variables across functions
    • Builds data flow graphs with def-use chains
    • Performs taint analysis from sources to sinks
    • Detects SQL injection, command injection, and other vulnerabilities
    • Recognizes sanitizers that neutralize taint
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions