CVE Enrichment

DevGuard's vulnerability database automatically enriches CVE data from multiple authoritative sources and exposes it through a REST API. The enrichment process aggregates data from 7+ sources including OSV, EPSS, CISA KEV, and exploit databases. The API provides programmatic access to enriched CVE information with advanced risk calculations, package vulnerability lookups, and ecosystem statistics.

Base URL: /api/v1/vulndb

API Endpoints

1. List CVEs (Paginated)

GET /api/v1/vulndb

Get a paginated list of enriched CVEs with filtering and sorting capabilities.

Query Parameters

ParameterTypeDescriptionDefault
pageintegerPage number1
limitintegerItems per page50
sort[field]stringSort direction (asc/desc)-
filterQuery[field][operator]stringFilter conditions-
confidentialityRequirementsstringCIA - Confidentiality (low/medium/high)medium
integrityRequirementsstringCIA - Integrity (low/medium/high)medium
availabilityRequirementsstringCIA - Availability (low/medium/high)medium

Example Request

GET /api/v1/vulndb?page=1&limit=10&sort[cvss]=desc&filterQuery[cvss][is greater than]=7&confidentialityRequirements=high

Example Response

{
  "page": 1,
  "pageSize": 10,
  "total": 245,
  "data": [
    {
      "cve": "CVE-2024-1234",
      "datePublished": "2024-01-15T00:00:00Z",
      "dateLastModified": "2024-01-20T00:00:00Z",
      "description": "A critical vulnerability in...",
      "cvss": 9.8,
      "vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
      "epss": 0.95432,
      "percentile": 0.99876,
      "cisaExploitAdd": "2024-01-16",
      "cisaActionDue": "2024-02-16",
      "cisaRequiredAction": "Apply updates per vendor instructions",
      "cisaVulnerabilityName": "Critical Remote Code Execution",
      "risk": {
        "baseScore": 9.8,
        "withEnvironment": 9.5,
        "withThreatIntelligence": 10.0,
        "withEnvironmentAndThreatIntelligence": 9.8
      },
      "exploits": [
        {
          "id": "exploitdb:12345",
          "description": "Remote code execution exploit",
          "verified": true,
          "sourceURL": "https://exploit-db.com/exploits/12345"
        }
      ],
    }
  ]
}

CVE Object

All API responses include CVE objects with the following structure:

FieldTypeDescriptionSource
cvestringCVE identifierOSV/NVD
datePublishedtimestampPublication dateOSV/NVD
dateLastModifiedtimestampLast modification dateOSV/NVD
descriptionstringVulnerability descriptionOSV/NVD
cvssfloatBase CVSS score (0-10)OSV/NVD
vectorstringCVSS vector string (enhanced)Calculated
referencesstring (JSON)Array of reference URLsOSV/NVD
epssfloatEPSS probability (0-1)FIRST EPSS
percentilefloatEPSS percentile rankingFIRST EPSS
cisaExploitAdddateDate added to CISA KEVCISA KEV
cisaActionDuedateRemediation deadlineCISA KEV
cisaRequiredActionstringRequired remediation actionCISA KEV
cisaVulnerabilityNamestringCISA vulnerability nameCISA KEV
riskRiskMetricsEnhanced risk calculationsCalculated
exploitsarrayKnown exploitsExploitDB + GitHub
weaknessesarrayAssociated CWEsMITRE CWE
affectedComponentsarrayVulnerable packages/versionsOSV + Debian
relationshipsarrayRelated CVEsOSV

RiskMetrics Object

Enhanced risk calculation beyond base CVSS:

FieldTypeDescription
baseScorefloatOriginal CVSS base score
withEnvironmentfloatScore adjusted for environment (CIA requirements)
withThreatIntelligencefloatScore adjusted for EPSS + exploits
withEnvironmentAndThreatIntelligencefloatFully contextualized risk score

Exploit Object

FieldTypeDescription
idstringExploit identifier (exploitdb:XXX or github:XXX)
descriptionstringExploit description
verifiedbooleanWhether exploit is verified
publishedtimestampPublication date
updatedtimestampLast update date
authorstringExploit author
sourceURLstringSource URL
starsintegerGitHub stars (GitHub exploits only)
forksintegerGitHub forks (GitHub exploits only)
integrityRequirementsstringIntegrity requirement
availabilityRequirementsstringAvailability requirement

Example Request

GET /api/v1/vulndb/CVE-2024-1234?confidentialityRequirements=high

Example Response

{
  "cve": "CVE-2024-1234",
  "datePublished": "2024-01-15T00:00:00Z",
  "dateLastModified": "2024-01-20T00:00:00Z",
  "description": "Detailed vulnerability description...",
  "cvss": 9.8,
  "vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:F/RC:C/CR:H",
  "references": "[{\"url\":\"https://...\",\"source\":\"nvd@nist.gov\",\"tags\":[\"Vendor Advisory\"]}]",
  "epss": 0.95432,
  "percentile": 0.99876,
  "cisaExploitAdd": "2024-01-16",
  "cisaActionDue": "2024-02-16",
  "cisaRequiredAction": "Apply updates per vendor instructions",
  "cisaVulnerabilityName": "Critical Remote Code Execution",
  "risk": {
    "baseScore": 9.8,
    "withEnvironment": 9.5,
    "withThreatIntelligence": 10.0,
    "withEnvironmentAndThreatIntelligence": 9.8
  },
  "exploits": [...],
  "weaknesses": [...],
  "affectedComponents": [...],
  "relationships": [...]
}

3. Inspect Package URL (PURL)

GET /api/v1/vulndb/purl-inspect/:purl

Analyze a Package URL to discover vulnerabilities and malicious package information.

Path Parameter: purl (URL-encoded, e.g., pkg:npm/lodash@4.17.20)

Example

GET /api/v1/vulndb/purl-inspect/pkg%3Anpm%2Flodash%404.17.20

Returns: PURL details, affected components, vulnerabilities, and malicious package status.

4. List CVE IDs by Creation Date

GET /api/v1/vulndb/list-ids-by-creation-date

Query Parameters

ParameterTypeDefault
offsetinteger0
limitintegerall

5. Get Ecosystem Distribution

GET /api/v1/vulndb/affected-package-distribution

Returns package counts by ecosystem (npm, maven, pypi, go, cargo, nuget, etc.).

Data Sources

SourceData ProvidedUpdate Frequency
OSVCVE details, affected packages, version ranges (Go, npm, Maven, PyPI, etc.)Continuous
EPSSExploit prediction scores, percentile rankingsDaily
CISA KEVKnown exploited CVEs, remediation deadlines, required actionsAs published
ExploitDBVerified exploits, publication infoContinuous
GitHub POCsProof-of-concept exploits, repository metricsContinuous
MITRE CWEWeakness classifications and descriptionsPeriodic
Debian SecurityDebian package vulnerability infoContinuous

Enhanced Risk Calculation

Risk scores are enhanced beyond base CVSS by incorporating:

  • Threat Intelligence: EPSS scores, exploit availability, verified exploits, CISA KEV status
  • Environmental Context: Confidentiality, Integrity, Availability requirements (CIA triad)
  • CVSS Support: Versions 2.0, 3.0, 3.1, 4.0

The API returns enhanced CVSS vectors with temporal and environmental metrics automatically populated.

Use Cases

1. Vulnerability Assessment

Query CVEs with specific CVSS thresholds and environmental context:

GET /api/v1/vulndb?filterQuery[cvss][is greater than]=7.0&confidentialityRequirements=high

2. Package Vulnerability Scanning

Check if a specific package version has known vulnerabilities:

GET /api/v1/vulndb/purl-inspect/pkg%3Anpm%2Fexpress%404.17.1

3. Exploit Intelligence

Find CVEs with active exploits in CISA KEV:

GET /api/v1/vulndb?filterQuery[cisaExploitAdd][is not null]=true&sort[cisaExploitAdd]=desc

4. Ecosystem Analysis

GET /api/v1/vulndb/affected-package-distribution

Filtering and Sorting

Filter Operators

The API supports sophisticated filtering on CVE fields:

OperatorExampleDescription
is equal tofilterQuery[cvss][is equal to]=9.8Exact match
is greater thanfilterQuery[cvss][is greater than]=7.0Greater than
is less thanfilterQuery[cvss][is less than]=5.0Less than
is not nullfilterQuery[epss][is not null]=trueField has value
containsfilterQuery[description][contains]=injectionText search

Sorting

Sort results by any field in ascending or descending order:

# Sort by CVSS score (descending)
GET /api/v1/vulndb?sort[cvss]=desc

# Sort by publication date (ascending)
GET /api/v1/vulndb?sort[datePublished]=asc

# Sort by EPSS percentile (descending)
GET /api/v1/vulndb?sort[percentile]=desc

Combining Filters and Sorts

GET /api/v1/vulndb?filterQuery[cvss][is greater than]=8.0&filterQuery[epss][is not null]=true&sort[epss]=desc&limit=50

Database Synchronization

Automatic: Updates run via daemon using incremental diffs from ghcr.io/l3montree-dev/devguard/vulndb/v1

Manual Sync:

devguard-cli vulndb sync                                      # Sync all
devguard-cli vulndb sync --databases epss,cisa-kev,exploitdb # Specific sources

Available Sources: cwe, osv, epss, cisa-kev, exploitdb, github-poc, dsa, malicious-packages

Disable Auto-Updates: export DISABLE_VULNDB_UPDATE=true