---
name: cvss-score-extraction
description: Extract CVSS scores from Trivy vulnerability data with proper source priority fallback (NVD > GHSA > RedHat).
---

# CVSS Score Extraction

## Source Priority

```
NVD (most authoritative) → GHSA → RedHat → N/A
```

Always prefer CVSS v3 scores. Fall back to v2 only if v3 unavailable.

## Implementation

```python
def get_cvss_score(vuln_data):
    """Extract best available CVSS v3 score. Returns float or 'N/A'."""
    cvss = vuln_data.get('CVSS', {})
    for source in ['nvd', 'ghsa', 'redhat']:
        if source in cvss:
            score = cvss[source].get('V3Score')
            if score is not None:
                return score
    return 'N/A'
```

## Trivy CVSS Data Format

```json
"CVSS": {
  "nvd": {
    "V2Score": 7.5,
    "V3Score": 9.8,
    "V3Vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
  },
  "ghsa": {
    "V3Score": 9.8
  }
}
```

## Score Severity Mapping

| Score | Severity |
|-------|----------|
| 9.0-10.0 | CRITICAL |
| 7.0-8.9 | HIGH |
| 4.0-6.9 | MEDIUM |
| 0.1-3.9 | LOW |
