trivy-vulnerability-scanning · git:20260424.d50cf5a · 2026-04-24 · sha256 6450bf6730e7af09

trivy-vulnerability-scanning git:20260424.d50cf5aA

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

---
name: trivy-vulnerability-scanning
description: Use Trivy vulnerability scanner in offline mode to detect CVEs in npm dependencies and generate structured JSON reports.
---

# Trivy Vulnerability Scanning

## Overview
Trivy is a simple, comprehensive vulnerability scanner that can analyze npm package-lock.json files for known security vulnerabilities. It works offline with a local vulnerability database.

## Installation

```bash
# Install Trivy
apt-get update && apt-get install -y trivy

# Verify installation
trivy --version
```

## Database Setup

Trivy requires a vulnerability database. For offline mode:

```bash
# Download the vulnerability database
trivy image download-db --severity HIGH,CRITICAL

# Or let Trivy auto-download on first use
trivy config /root/package-lock.json
```

## Scanning Modes

### Scan package-lock.json
```bash
trivy config /root/package-lock.json \
  --format json \
  --output results.json \
  --severity HIGH,CRITICAL
```

### Scan Options
- `--format json`: Output JSON format (best for parsing)
- `--severity HIGH,CRITICAL`: Only HIGH and CRITICAL vulnerabilities
- `--output file.json`: Write to file
- `--offline-db`: Use offline database if downloaded
- `--skip-update`: Skip database update (offline mode)

## Output Structure

Trivy JSON output contains:

```json
{
  "Results": [
    {
      "Target": "package-lock.json",
      "Type": "npm",
      "Misconfigurations": null,
      "Vulnerabilities": [
        {
          "VulnerabilityID": "CVE-2021-12345",
          "PkgName": "lodash",
          "InstalledVersion": "4.17.20",
          "FixedVersion": "4.17.21",
          "Severity": "HIGH",
          "Title": "Prototype pollution",
          "Description": "...",
          "References": ["https://nvd.nist.gov/vuln/detail/CVE-2021-12345"]
        }
      ]
    }
  ]
}
```

## Parsing Results

```python
import json

def parse_trivy_results(json_file):
    with open(json_file, 'r') as f:
        data = json.load(f)

    vulnerabilities = []
    for result in data.get('Results', []):
        for vuln in result.get('Vulnerabilities', []):
            if vuln['Severity'] in ['HIGH', 'CRITICAL']:
                vulnerabilities.append({
                    'package': vuln['PkgName'],
                    'version': vuln['InstalledVersion'],
                    'cve_id': vuln['VulnerabilityID'],
                    'severity': vuln['Severity'],
                    'title': vuln['Title'],
                    'fixed_version': vuln.get('FixedVersion', 'N/A'),
                    'references': vuln.get('References', [])
                })

    return vulnerabilities
```

## Usage

Use this skill when:
- Scanning npm package-lock.json for vulnerabilities
- Need offline vulnerability detection
- Building security audit pipelines
- Filtering for specific severity levels

## Related Skills

- `cvss-score-extraction`: Extract CVSS scores for detected vulnerabilities
- `security-audit-csv-reporting`: Convert results to CSV format