
Vulnerability management platform that imports scanner reports, enriches with CISA KEV and Exploit-DB intelligence, and provides contextual risk scoring for prioritized remediation.
A comprehensive vulnerability management platform that analyzes security scan reports, enriches vulnerability data with exploit intelligence, and provides actionable risk scoring for prioritized remediation.
*** The use of the CVE Enrichment process on the first upload those slow down the upload process, It will only try to enrich vulnerabilities uploaded that are marked as exploitable from your scans but timing can vary significatly depending on the uploaded file size.***

The dashboard provides an at-a-glance view of your security posture with:
Browse, filter, and sort vulnerabilities by:

Detailed view including:

Option A: Using the installer
node --version
npm --version
Option B: Use a Stable Node Version (Recommended)
nvm install 22.12.0
nvm use 22.12.0
Option C: Using winget (Windows Package Manager)
winget install OpenJS.NodeJS.LTS
winget install Git.Git
Option D: Using Chocolatey
choco install nodejs-lts
choco install git
Using Homebrew:
brew install node
brew install git
Or download the installer from https://nodejs.org
Verify installation:
node --version
npm --version
# Using NodeSource repository for latest LTS
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs git
# Verify
node --version
npm --version
macOS / Linux:
git clone https://github.com/jrokz2315/exploit-mapper.git
cd exploit-mapper
Windows (Command Prompt):
git clone https://github.com/jrokz2315/exploit-mapper.git
cd exploit-mapper
Windows (PowerShell):
git clone https://github.com/jrokz2315/exploit-mapper.git
cd exploit-mapper
All platforms:
npm run install:all
Or install manually:
macOS / Linux:
npm install
cd server && npm install
cd ../client && npm install
cd ..
Windows (Command Prompt):
npm install
cd server && npm install
cd ..\client && npm install
cd ..
Windows (PowerShell):
npm install
cd server; npm install
cd ..\client; npm install
cd ..
Note (Windows): If you encounter errors with
better-sqlite3, you may need to install the Windows build tools:npm install --global windows-build-toolsOr install Visual Studio Build Tools with the "Desktop development with C++" workload from https://visualstudio.microsoft.com/visual-cpp-build-tools/
Development mode (with hot reload) — all platforms:
npm run dev
This starts both the backend server (port 3000) and frontend dev server (port 5173).
Production mode — all platforms:
# Build the client
npm run build
# Start the server
npm start
Open your browser and navigate to:
http://localhost:5173http://localhost:3000On first run, a default admin account is created:
adminAdmin123!You will be prompted to change this password on first login.
exploit-mapper/
├── client/ # React frontend
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Page components
│ │ └── App.jsx # Main app component
│ ├── package.json
│ └── vite.config.js
├── server/ # Express backend
│ ├── src/
│ │ ├── db/ # Database schema and connection
│ │ ├── middleware/ # Auth middleware
│ │ ├── routes/ # API routes
│ │ └── services/ # Business logic
│ ├── data/ # SQLite database (gitignored)
│ ├── uploads/ # Temporary upload storage (gitignored)
│ └── package.json
├── package.json # Root package with scripts
├── .gitignore
├── LICENSE
├── CONTRIBUTING.md
└── README.md
| Method | Endpoint | Description |
|---|---|---|
POST | /api/auth/login | User login |
POST | /api/auth/logout | User logout |
GET | /api/auth/me | Get current user |
POST | /api/auth/change-password | Change password |
| Method | Endpoint | Description |
|---|---|---|
GET | /api/dashboard/summary | Dashboard metrics |
GET | /api/dashboard/risk | Risk breakdown |
GET | /api/dashboard/trends | Historical trends |
GET | /api/dashboard/executive-summary | Executive summary |
| Method | Endpoint | Description |
|---|---|---|
GET | /api/vulnerabilities | List (with filtering/pagination) |
GET | /api/vulnerabilities/:id | Vulnerability details |
GET | /api/vulnerabilities/exploitable | Exploitable only |
GET | /api/vulnerabilities/stats/summary | Statistics |
PATCH | /api/vulnerabilities/:id | Update status |
PATCH | /api/vulnerabilities | Bulk update |
POST | /api/vulnerabilities/manual | Add manual entry |
DELETE | /api/vulnerabilities/:id | Delete manual entry |
| Method | Endpoint | Description |
|---|---|---|
GET | /api/devices | List devices |
GET | /api/devices/:id | Device details |
PATCH | /api/devices/:id | Update device info |
| Method | Endpoint | Description |
|---|---|---|
POST | /api/upload | Upload vulnerability report |
GET | /api/upload/info | Upload stats |
DELETE | /api/upload/clear | Clear all data |
| Method | Endpoint | Description |
|---|---|---|
GET | /api/reports | List uploaded reports |
GET | /api/reports/:id/export | Export report |
Exploit Mapper automatically detects and maps columns from various vulnerability scanners:
| Scanner | Detection Method |
|---|---|
| Arctic Wolf | risk_id, asset_category columns |
| Nessus/Tenable | plugin_id column |
| Qualys | qid column |
| OpenVAS | nvt column |
| Nexpose/Rapid7 | nexpose identifier |
| Generic CSV/Excel | Intelligent column name matching |
The parser automatically maps common column names:
| Field | Recognized Column Names |
|---|---|
| CVE | cve, cves, cve_id, vulnerability_id |
| Title | name, title, vulnerability, plugin_name |
| Description | description, synopsis, summary |
| Solution | solution, remediation, fix, recommendation |
| Severity | severity, risk_severity, risk_level |
| CVSS Score | cvss, cvss_score, cvssv3_score |
| Host | hostname, asset_name, host_name, fqdn |
| IP Address | ip_address, host_ip, asset_ip |
Risk Score = CVSS Score + Adjustments
Adjustments:
+0.5 if in CISA KEV (actively exploited)
+0.3 if public exploit available
Overall = (Max Risk x 30%) + (Avg Risk x 40%) + (Avg Exploitable x 20%) + (Density x 10%)
With CISA KEV present: multiply by 1.05
| Component | Weight | Description |
|---|---|---|
| Max Risk Score | 30% | Highest single vulnerability risk |
| Avg Risk Score | 40% | Average across all vulnerabilities |
| Avg Exploitable Risk | 20% | Average of exploitable vulns only |
| Density Factor | 10% | log10(total_vulns + 1) x 3 (max 10) |
Create a .env file in the server/ directory (optional — see server/.env.example):
PORT=3000
NODE_ENV=production
SESSION_SECRET=your-secret-key
Exploit Mapper uses SQLite for zero-configuration storage. The database is automatically created at server/data/exploit-mapper.db on first run.
Windows:
netstat -ano | findstr :3000
taskkill /PID <pid> /F
macOS / Linux:
lsof -i :3000
kill -9 <pid>
This native module requires C++ build tools:
:: Option 1: Install via npm
npm install --global windows-build-tools
:: Option 2: Install Visual Studio Build Tools
:: Download from https://visualstudio.microsoft.com/visual-cpp-build-tools/
:: Select "Desktop development with C++" workload
After installing, delete node_modules and reinstall:
cd server
rmdir /s /q node_modules
npm install
Ensure only one instance of the server is running. On Windows:
tasklist | findstr node
taskkill /IM node.exe /F
On macOS / Linux:
pkill -f "node.*index.js"
.csv, .xlsx, or .xls formatIf concurrently fails, try running the server and client separately in two terminal windows:
Terminal 1 (Server):
cd server
npm run dev
Terminal 2 (Client):
cd client
npm run dev
See CONTRIBUTING.md for detailed guidelines.
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)This project is licensed under the MIT License - see the LICENSE file for details.