cvss-score-extraction · git:20260424.d50cf5a · 2026-04-24 · sha256 c51040c4b6c4c3d5

cvss-score-extraction git:20260424.d50cf5aA

Immutable. This exact content never changes and is served at /api/v1/blob/c51040c4b6c4c3d5.

---
name: cvss-score-extraction
description: Extract CVSS scores from vulnerability data sources with proper fallback handling across NVD, GHSA, and RedHat sources.
---

# CVSS Score Extraction

## Overview
CVSS (Common Vulnerability Scoring System) scores may come from multiple sources in Trivy output. Implement priority-based extraction with fallbacks.

## Trivy CVSS Structure
```json
{
  "CVSS": {
    "nvd": { "V3Score": 9.8, "V3Vector": "..." },
    "ghsa": { "V3Score": 8.1, "V3Vector": "..." },
    "redhat": { "V3Score": 7.5, "V3Vector": "..." }
  }
}
```

## Extraction Priority
1. **NVD** (`nvd.V3Score`) — preferred authoritative source
2. **GHSA** (`ghsa.V3Score`) — GitHub Security Advisory
3. **RedHat** (`redhat.V3Score`) — Red Hat security data
4. Fall back to empty string or "N/A" if no score available

## Python Implementation
```python
def extract_cvss_score(cvss_data):
    """Extract CVSS v3 score with source priority: NVD > GHSA > RedHat."""
    if not cvss_data:
        return ""
    for source in ["nvd", "ghsa", "redhat"]:
        source_data = cvss_data.get(source, {})
        score = source_data.get("V3Score")
        if score is not None:
            return score
    return ""
```