Bug Hunter CVSS Calculator
A dark-themed, single-file CVSS v3.1 scoring engine built for bug bounty hunters and security researchers.
Features • Quickstart • Decision Tree • OWASP Presets • Audit Log • Tech Stack • Security • License
Full implementation of the Common Vulnerability Scoring System v3.1 specification:
- Base Score — Attack Vector, Attack Complexity, Privileges Required, User Interaction, Scope, Confidentiality, Integrity, Availability
- Temporal Score — Exploit Maturity, Remediation Level, Report Confidence
- Environmental Score — Confidentiality, Integrity, Availability Requirements (CR/IR/AR)
- Real-time animated gauge with severity classification (NONE → LOW → MEDIUM → HIGH → CRITICAL)
- CRITICAL scores (9.0+) trigger a pulse animation to draw attention
28 vulnerability categories with 89 pre-scored scenarios across all severity levels:
| Category | Key | Category | Key |
|---|---|---|---|
| Cross-Site Request Forgery | CSRF |
Remote Code Execution | RCE |
| Cross-Site Scripting | XSS |
XML External Entity | XXE |
| CORS Misconfiguration | CORS |
Server-Side Template Injection | SSTI |
| Insecure Direct Object Reference | IDOR |
Open Redirect | REDIR |
| Business Logic Flaws | BIZ |
Malicious File Upload | UPLOAD |
| Server-Side Request Forgery | SSRF |
Authentication Bypass | AUTHBYP |
| SQL Injection | SQLI |
Race Condition | RACE |
| Insecure Deserialization | DESER |
JWT Vulnerabilities | JWT |
| GraphQL Vulnerabilities | GQL |
API Security Flaws | APIS |
| Subdomain Takeover | SUBTK |
Clickjacking | CLICKJ |
| HTTP Request Smuggling | SMUGGL |
Web Cache Poisoning | CACHEP |
| Host Header Injection | HOSTHDR |
Path Traversal | PATHTR |
| Information Disclosure | INFOLEAK |
Missing Rate Limiting | RATELIM |
| Mass Assignment | MASSASGN |
Prototype Pollution | PROTOPL |
Each scenario includes:
- Real-world description
- Pre-calculated CVSS score
- Severity + Bounty Tier classification
- One-click vector loading into the calculator
One-click loading of OWASP Top 10 (2021) vulnerability vectors:
- A01 — Broken Access Control
- A02 — Cryptographic Failures
- A03 — Injection (SQLi, XSS, Command Injection)
- A04 — Insecure Design
- A05 — Security Misconfiguration
- A06 — Vulnerable Components
- A07 — Auth & Session Failures
- A08 — Software & Data Integrity
- A09 — Security Logging Failures
- A10 — Server-Side Request Forgery
Automatic classification into bug bounty payout tiers:
| Score | Severity | Tier | Typical Payout |
|---|---|---|---|
| 9.0 – 10.0 | CRITICAL | P1 | $2,000 – $10,000+ |
| 7.0 – 8.9 | HIGH | P2 | $500 – $2,000 |
| 4.0 – 6.9 | MEDIUM | P3 | $150 – $500 |
| 0.1 – 3.9 | LOW | P4 | $50 – $150 |
| 0.0 | NONE | P5 | $0 – $50 (Info) |
- Commit calculated vectors to a local audit log
- Copy any vector to clipboard with one click
- Export full audit log as JSON
- Entries stored in localStorage with UUID identifiers
- Maximum 50 entries with duplicate detection
Paste any CVSS v3.1 vector string and parse it directly into the calculator:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
# Clone the repo
git clone https://github.com/YOUR_USERNAME/vector.git
# Open in browser
open index.html# Python
python -m http.server 8080
# Node.js
npx serve .
# Then open http://localhost:8080No build step. No dependencies to install. Just open index.html.
- Select values for all 8 base metrics (Attack Vector, Attack Complexity, etc.)
- Optionally set Temporal metrics (Exploit Maturity, Remediation Level, Report Confidence)
- The score updates in real-time on the gauge
- Click Commit to Audit Log to save
- Scroll to the Vuln Decision Tree section
- Select a vulnerability category tab (CSRF, XSS, SQLi, etc.)
- Click a scenario card to view details
- Click Load Vector into Calculator to auto-fill all metrics
- Click Parse Vector String in the sidebar
- Paste any CVSS v3.1 vector (e.g.,
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) - Click Parse & Load
- Metrics auto-fill and score calculates
- Select an OWASP category from the dropdown
- Click Apply
- Vector loads with a description of the vulnerability class
| Technology | Purpose |
|---|---|
| HTML5 | Semantic structure |
| CSS3 | Dark theme with CSS variables, custom properties |
| JavaScript (ES6+) | CVSS calculation engine, DOM manipulation |
| GSAP 3.12.5 | Scroll animations, gauge animations, UI transitions |
| Tailwind CSS | Utility-first layout helpers |
| Google Fonts | Bebas Neue (display), JetBrains Mono (code), Space Grotesk (body) |
All external scripts loaded with Subresource Integrity (SRI) hashes.
vector/
├── index.html # Complete SPA — HTML + CSS + JS in one file
├── README.md # This file
└── UPDATE.md # Full changelog
| Protection | Description |
|---|---|
| XSS Prevention | escapeHtml() sanitizes all data before innerHTML injection |
| Safe DOM Rendering | Decision Tree uses createElement + textContent instead of innerHTML |
| Input Whitelisting | All CVSS keys/values validated against VALID_CVSS_KEYS before processing |
| localStorage Validation | sanitizeLogEntry() validates type, length, and score range of all entries |
| SRI Hashes | GSAP scripts loaded with integrity + crossorigin attributes |
| No Inline Handlers | Event listeners attached via addEventListener, not onclick attributes |
| UUID Audit Entries | Each log entry gets a v4 UUID to prevent ID collisions |
This is a client-side only tool. All calculations happen in the browser. No data is sent to any server. The audit log uses localStorage for persistence.
role="radiogroup"+aria-labelon all metric option gridsaria-labelon every radio inputaria-live="polite"on score gauge and live clock- Global
focus-visiblestyles for keyboard navigation - Focus trap in the Parse Vector modal
- High-contrast dark theme
| Browser | Status |
|---|---|
| Chrome 90+ | Full support |
| Firefox 90+ | Full support |
| Safari 15+ | Full support |
| Edge 90+ | Full support |
- Fork the repository
- Create a feature branch (
git checkout -b feature/new-vuln-category) - Make your changes in
index.html - Test in at least two browsers
- Submit a pull request
- Add a new entry to the
DT_DATAobject in the<script>section - Add a
<button class="dt-tab" data-vuln="YOUR_KEY">Label</button>to the#dt-tabsdiv - Follow the existing format:
label,icon,scenarios[]withid,tier,sev,score,color,name,desc,vector
MIT License. Use it, fork it, modify it.
VECTOR — Built for bug hunters who take scoring seriously.