Skip to main content

Overview

The CVE Lookup module (modules/cve_lookup.py) queries public CVE databases to identify known vulnerabilities in discovered services. It provides CVSS scoring, exploit availability checking, and risk assessment.

CVELookup Class

Defined at cve_lookup.py:13, this class handles all CVE database interactions.

Initialization

cve_lookup.py:14-18
CVE Data Sources:
  1. CVE CIRCL API (primary): Fast, no authentication required
  2. NVD API (fallback): National Vulnerability Database with detailed metrics

Key Methods

search_cve_by_product()

Searches CVE databases for vulnerabilities affecting a specific product and version.
cve_lookup.py:20-64
string
required
Product name (e.g., “apache”, “openssh”, “mysql”)
string
Product version for filtering results (e.g., “2.4.41”)

parse_cve_entry()

Extracts and normalizes CVE information from API responses.
cve_lookup.py:66-111

CVSS Score Interpretation

calculate_risk_level()

Maps CVSS scores to risk severity levels.
cve_lookup.py:113-124
CVSS v3 Severity Ratings:

Exploit Detection

check_exploit_availability()

Determines if public exploits are available for a CVE.
cve_lookup.py:126-142
Exploit Sources Checked:
  • Exploit-DB
  • Metasploit Framework
  • Proof-of-Concept (PoC) repositories
  • Security advisories with exploit code

Service CVE Lookup

lookup_services()

Looks up CVEs for all discovered services from port scan.
cve_lookup.py:160-185
The module automatically skips generic services like “unknown” or “tcpwrapped” to reduce false positives.

Usage Example

Output Format

Rate Limiting

The module implements rate limiting to respect API usage policies:
cve_lookup.py:56-57
Excessive API requests may result in temporary IP blocking. The built-in rate limiting prevents this.

Configuration

CVE lookup settings in config.json:
config.json
boolean
default:true
Enable/disable CVE lookup during scans
number
default:10
Maximum CVEs to return per service (prevents overwhelming results)
boolean
default:true
Cache CVE data to reduce API calls

Error Handling

Requests timeout after 10 seconds. Returns empty results and continues scanning.
Returns empty list if no CVEs match the service/version.Common causes:
  • Service version too new (no CVEs yet)
  • Product name not in CVE database
  • Version string parsing failed
Catches connection errors and continues scan.

Risk Engine

How CVE data is used in risk scoring

Exploit Engine

Matching CVEs to available exploits

PDF Reports

CVE information in generated reports

Configuration

CVE lookup settings