Skip to content

Latest commit

 

History

History
328 lines (237 loc) · 8.8 KB

File metadata and controls

328 lines (237 loc) · 8.8 KB

CVE Tracker

Python React FastAPI SQLite License

A friendly vulnerability tracking system for those interested in cybersecurity.

Search, manage, and analyze Common Vulnerabilities and Exposures (CVE) with a modern, dark-themed web interface.

FeaturesQuick StartDocumentationDemo


📸 Screenshots

CVE Tracker Interface

Search, filter, and manage CVEs with color-coded severity indicators

Key Features Shown:

  • 🔍 Advanced search with product/vendor filtering
  • 📊 CVSS score sorting (ascending/descending)
  • 🎯 Critical-only filter (CVSS ≥ 9.0)
  • 🎨 Color-coded severity badges (Red: Critical, Orange: High, Yellow: Medium, Green: Low)
  • ➕ Create new CVE records
  • 📥 Export to CSV with column selection
  • 💾 6 sample CVEs included (vsftpd, OpenSSH, Apache, sudo, WordPress, nginx)

✨ Features

🔍 Advanced Search & Discovery

  • Multi-mode search: CVE ID, product/vendor name, or keywords
  • Smart filtering: Show only critical vulnerabilities (CVSS ≥ 9.0)
  • Flexible sorting: By CVSS score or CVE ID (ascending/descending)
  • Real-time results: Instant search with color-coded severity indicators

📊 Comprehensive CVE Management

  • Full CRUD operations: Create, read, update, and delete CVE records
  • Reference link management: Add, edit, and remove reference URLs dynamically
  • Detailed view: Complete vulnerability information at a glance
  • CVSS color coding: Visual severity indicators (Critical, High, Medium, Low)

📥 Data Import & Export

  • Automated import: Fetch CVEs directly from NVD (National Vulnerability Database)
  • Smart caching: Local JSON caching for improved performance
  • Idempotent updates: Safe to run imports multiple times
  • CSV export: Export search results with customizable column selection

🎨 Modern Interface

  • Cybersteps-themed design: Clean dark theme with cyan accents
  • Responsive layout: Works on desktop, tablet, and mobile
  • Intuitive UI: Clean, modern interface built with React
  • Interactive modals: Smooth forms for creating and editing CVEs

🚀 Quick Start

Prerequisites

  • Python 3.8+
  • Node.js 16+ and npm

Check your setup:

python --version
node --version

Prerequisites:

Installation

1. Clone the repository

git clone https://github.com/ZakariaHn/cve-tracker.git
cd cve-tracker

2. Start the application

# Windows
.\scripts\start.ps1

The startup script automatically:

  • ✅ Creates Python virtual environment
  • ✅ Installs all dependencies
  • ✅ Seeds database with sample data
  • ✅ Starts backend server (port 8000)
  • ✅ Starts frontend dev server (port 5173)

3. Open in browser

Navigate to http://localhost:5173


📖 Documentation

Document Description
docs/QUICK_START.md Complete setup guide (5 minutes)
docs/IMPORT_GUIDE.md Import real CVE data from NVD
docs/ADVANCED_FEATURES.md CRUD operations, export, filtering
docs/AI_ASSISTED_DEVELOPMENT.md AI-assisted development process
docs/STRUCTURE.md Project structure reference

💡 Usage Examples

Search for Vulnerabilities

By Product/Vendor:

vsftpd 3.0.3
Apache HTTP Server
OpenSSH

By CVE ID:

CVE-2023-1234
CVE-2024-5678

Import Real CVE Data

# Activate virtual environment
.\venv\Scripts\Activate.ps1

# Import from NVD
python scripts/import_cves.py

Export to CSV

  1. Perform a search
  2. Apply filters (optional)
  3. Click "Export CSV"
  4. Select columns to include
  5. Download the file

🏗️ Project Structure

cve-tracker/
├── app/                         # Backend (FastAPI)
├── frontend/                    # Frontend (React + Vite)
├── scripts/                     # Utility scripts
├── docs/                        # Documentation
└── data/                        # Data directory

📖 Detailed Structure: See docs/STRUCTURE.md for complete visual tree.


🔧 Technology Stack

Backend

Frontend

Data Source

  • NVD API - National Vulnerability Database

📡 API Documentation

Core Endpoints

Method Endpoint Description
GET /search Search CVEs with filters and sorting
GET /cves/{cve_id} Get detailed CVE information
POST /cves Create a new CVE record
PUT /cves/{cve_id} Update an existing CVE
DELETE /cves/{cve_id} Delete a CVE
GET /export.csv Export CVEs to CSV

Interactive API Docs: http://localhost:8000/docs (when running)


🗄️ Database Schema

CVEs Table

CREATE TABLE cves (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    cve_id VARCHAR UNIQUE NOT NULL,
    description TEXT NOT NULL,
    cvss_score REAL NOT NULL,
    product_vendor VARCHAR NOT NULL
);

Reference Links Table

CREATE TABLE reference_links (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    cve_id VARCHAR NOT NULL,
    url VARCHAR NOT NULL,
    FOREIGN KEY (cve_id) REFERENCES cves(cve_id) ON DELETE CASCADE
);

🎨 CVSS Severity Ratings

Range Severity Color
9.0 - 10.0 Critical 🔴 Red
7.0 - 8.9 High 🟠 Orange
4.0 - 6.9 Medium 🟡 Yellow
0.1 - 3.9 Low 🟢 Green

🔍 Viewing Database Contents

# Activate virtual environment
.\venv\Scripts\Activate.ps1  # Windows

# Simple table view
python scripts/view_database.py

# Or use Python one-liner for custom queries
python -c "import sqlite3; conn = sqlite3.connect('cve_tracker.db'); cursor = conn.cursor(); cursor.execute('SELECT cve_id, product_vendor, cvss_score FROM cves ORDER BY cvss_score DESC'); [print(f'{row[0]} | {row[1]} | CVSS: {row[2]}') for row in cursor.fetchall()]; conn.close()"

🔍 Troubleshooting

"Python/Node is not recognized"

  • Windows: Reinstall and check "Add to PATH"

"Scripts are disabled"

# Windows
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

"Port already in use"

# Find process using port 8000
netstat -ano | findstr :8000

# Kill the process
taskkill /PID <number> /F

Database errors

# Reset database
Remove-Item cve_tracker.db
python scripts/seed_data.py

More help: See troubleshooting section in docs/QUICK_START.md


📝 About This Project

This is a learning project built to demonstrate:

  • Full-stack development with Python (FastAPI) and React
  • Working with external APIs (NVD)
  • Database design and ORM usage
  • Modern web application architecture
  • CVE tracking and cybersecurity concepts

Feel free to use this as a reference or learning resource! 🎓


📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


🎓 Acknowledgments

  • NVD (National Vulnerability Database) for providing CVE data
  • CVE Program for maintaining the CVE system
  • Cybersteps for project inspiration and training

Guided by intent 🧠, planned with care 📐✍️, brought to life through careful automation 🤖

See AI-Assisted Development Process for transparency about the development methodology.

Report BugRequest Feature