Skip to content

ganeshkrishnareddy/Azure-DevOps-Vulnerability-Patch-Dashboard

Repository files navigation

🛡️ Azure DevOps Vulnerability & Patch Dashboard

A comprehensive dashboard for tracking vulnerabilities and patches in Azure DevOps build and release pipelines. Built with Python, Dash, and integrated with Azure DevOps REST API and Microsoft Security Response Center (MSRC) API.

Dashboard Preview

Features

  • Real-time Vulnerability Tracking: Monitor vulnerabilities across all Azure DevOps pipelines
  • Patch Management: Track patch availability and status for identified vulnerabilities
  • Interactive Filtering: Filter by severity, status, and patch availability
  • Visual Analytics:
    • Vulnerability distribution by severity
    • Top affected pipelines
    • Patch coverage metrics
  • Comprehensive Metrics:
    • Total vulnerabilities
    • Critical/High severity counts
    • Patch coverage percentage
    • Unpatched critical/high vulnerabilities
  • Sample Data Mode: Test the dashboard with realistic sample data before connecting to live APIs

Technologies Used

  • Backend: Python 3.8+
  • Dashboard Framework: Dash + Plotly
  • UI Components: Dash Bootstrap Components
  • APIs:
    • Azure DevOps REST API
    • Microsoft Security Response Center (MSRC) API
  • Data Processing: Pandas

Prerequisites

  • Python 3.8 or higher
  • Azure DevOps organization (for live data)
  • Azure DevOps Personal Access Token with permissions:
    • Build (Read)
    • Release (Read)
    • Code (Read)

Quick Start

1. Clone or Download the Project

cd d:\WebApps\azure-vuln-dashboard

2. Create Virtual Environment

python -m venv venv

3. Activate Virtual Environment

Windows:

venv\Scripts\activate

Linux/Mac:

source venv/bin/activate

4. Install Dependencies

pip install -r requirements.txt

5. Configure Environment Variables

Copy .env.example to .env and update with your settings:

copy .env.example .env

Edit .env:

# Azure DevOps Configuration
AZURE_DEVOPS_ORG=your-organization-name
AZURE_DEVOPS_PAT=your-personal-access-token

# Dashboard Configuration
DASHBOARD_PORT=8050
DEBUG_MODE=True

# Use Sample Data (Set to False when connecting to real Azure DevOps)
USE_SAMPLE_DATA=True

6. Run the Dashboard

python run.py

The dashboard will be available at: http://127.0.0.1:8050

Using Sample Data

By default, the dashboard uses sample data (USE_SAMPLE_DATA=True). This allows you to:

  • Test the dashboard without Azure DevOps credentials
  • See realistic vulnerability and patch data
  • Explore all features and functionality

Sample data includes:

  • 12 realistic vulnerabilities with various severity levels
  • 9 patch records with KB article information
  • Multiple pipeline types (Build and Release)

Connecting to Live Azure DevOps

To connect to your actual Azure DevOps organization:

  1. Generate Personal Access Token (PAT):

    • Go to Azure DevOps → User Settings → Personal Access Tokens
    • Click "New Token"
    • Set scopes: Build (Read), Release (Read), Code (Read)
    • Copy the generated token
  2. Update .env file:

    AZURE_DEVOPS_ORG=mycompany
    AZURE_DEVOPS_PAT=your-actual-pat-token-here
    USE_SAMPLE_DATA=False
  3. Restart the dashboard:

    python run.py

Project Structure

azure-vuln-dashboard/
├── src/
│   ├── api/
│   │   ├── azure_devops_client.py    # Azure DevOps API integration
│   │   ├── patch_service.py          # Patch status queries
│   │   └── __init__.py
│   ├── etl/
│   │   ├── data_aggregator.py        # Data aggregation logic
│   │   ├── transformer.py            # Data transformation
│   │   └── __init__.py
│   ├── dashboard/
│   │   ├── app.py                    # Main Dash application
│   │   ├── layouts.py                # Dashboard layouts
│   │   ├── callbacks.py              # Interactive callbacks
│   │   └── __init__.py
│   ├── data/
│   │   ├── sample_vulnerabilities.json
│   │   └── sample_patches.json
│   └── config.py                     # Configuration management
├── .env.example                      # Environment variables template
├── .gitignore
├── requirements.txt
├── README.md
├── DEPLOYMENT.md
└── run.py                            # Application entry point

Dashboard Components

Metrics Cards

  • Total Vulnerabilities: Overall count of detected vulnerabilities
  • Critical/High: Count of critical and high severity vulnerabilities
  • Patch Coverage: Percentage of vulnerabilities with available patches
  • Unpatched Critical/High: Count of high-risk unpatched vulnerabilities

Filters

  • Severity Filter: Filter by Critical, High, Medium, Low
  • Status Filter: Filter by Open, In Progress, Patched
  • Patch Availability: Filter by patch available or not

Visualizations

  • Severity Distribution: Pie chart showing vulnerability breakdown by severity
  • Top Affected Pipelines: Bar chart of most vulnerable pipelines

Vulnerability Table

Interactive table with:

  • CVE ID
  • Vulnerability title
  • Severity level (color-coded)
  • CVSS score
  • Affected pipeline
  • Detection date
  • Status
  • Patch availability indicator

API Integration Details

Azure DevOps REST API

The dashboard integrates with Azure DevOps using version 7.0 of the REST API:

  • Endpoints Used:
    • /_apis/projects - Get all projects
    • /_apis/build/definitions - Get build pipelines
    • /_apis/build/builds - Get build history
    • /_apis/release/definitions - Get release pipelines
    • /_apis/release/releases - Get release history

Microsoft Security Response Center (MSRC) API

For patch information:

  • Endpoints Used:
    • /cvrf/v2.0/updates - Get security update summaries
    • /cvrf/v2.0/cvrf/{id} - Get detailed update information

Customization

Adding Custom Data Sources

To add additional vulnerability sources, extend the DataAggregator class:

def fetch_custom_vulnerabilities(self):
    # Your custom logic here
    return vulnerabilities

Modifying Dashboard Layout

Edit src/dashboard/layouts.py to customize the dashboard appearance and components.

Adding New Filters

  1. Add filter UI in layouts.py
  2. Add filter logic in callbacks.py

Troubleshooting

Dashboard won't start

  • Check Python version (3.8+)
  • Ensure all dependencies are installed: pip install -r requirements.txt
  • Check for port conflicts (default: 8050)

No data showing

  • Verify .env configuration
  • Check Azure DevOps PAT permissions
  • Review console logs for error messages

API Connection Issues

  • Verify organization name is correct
  • Ensure PAT hasn't expired
  • Check network connectivity to Azure DevOps

Security Best Practices

  1. Never commit .env file - It contains sensitive credentials
  2. Use least-privilege PAT - Only grant required permissions
  3. Rotate PATs regularly - Set expiration dates and rotate tokens
  4. Secure the dashboard - Use authentication if exposing publicly

Contributing

Contributions are welcome! Areas for improvement:

  • Additional data sources (SonarQube, Snyk, etc.)
  • Email notifications for new critical vulnerabilities
  • Historical trend analysis
  • Export functionality (PDF, Excel)
  • Multi-organization support

License

This project is provided as-is for educational and demonstration purposes.

Support

For issues or questions:

  1. Check the DEPLOYMENT.md guide
  2. Review console logs for error details
  3. Verify Azure DevOps API documentation

Screenshots

Dashboard Overview

Dashboard Overview

Filtered View

Filtered View

Vulnerability Details

Vulnerability Details


👨‍💻 Developer Information

About the Developer

P Ganesh Krishna Reddy
Cybersecurity Undergraduate & Full-Stack Developer

I am a passionate cybersecurity professional with hands-on experience in designing SOC-aligned detection systems, performing penetration testing, analyzing attack vectors, and conducting vulnerability research across network and application layers.

📬 Contact Information

Key Coursework: Intrusion Detection Systems, Application Security, Network Security, SOC Operations, Threat Detection, Malware Analysis, Digital Forensics, Secure Coding Practices

🏆 Certifications

  • QuickHeal Certified Malware Analyst - December 2025
  • CompTIA Network+ - August 2025
  • CompTIA Security+ - August 2025
  • QuickHeal Certified Digital Forensic Investigator - January 2026
  • CS50: Introduction to Computer Science - Harvard University

💼 Key Projects

IDS Defense - SOC-Grade ML Intrusion Detection

January 2026 - Present

  • Developed real-time intrusion detection system with ML-based anomaly detection
  • Integrated XGBoost models for detecting DDoS, SQL injection, and brute-force attacks
  • Technologies: Python, XGBoost, FastAPI, Next.js
  • GitHub: github.com/ganeshkrishnareddy/IDS-Defense

MailShield - AI-Powered Phishing Defense

August 2025 - December 2025

  • Built automated email and URL threat analysis system
  • Applied heuristics-based AI analysis and sandbox validation for real-time classification
  • Technologies: Python, AI/ML Heuristics, API Security
  • GitHub: github.com/ganeshkrishnareddy/mailshield

Android Security - Insecure Storage & Network Analysis

April 2025 - July 2025

  • Investigated Android applications vulnerable to insecure data storage and network interception
  • Performed static and dynamic analysis using instrumentation and runtime hooking techniques
  • Technologies: Python, JADX, Frida
  • GitHub: github.com/ganeshkrishnareddy/AndroidSecurityProject

Built with ❤️ using Python and Dash by P Ganesh Krishna Reddy

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors