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 atcve_lookup.py:13, this class handles all CVE database interactions.
Initialization
cve_lookup.py:14-18
- CVE CIRCL API (primary): Fast, no authentication required
- 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
Exploit Detection
check_exploit_availability()
Determines if public exploits are available for a CVE.cve_lookup.py:126-142
- 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
Configuration
CVE lookup settings inconfig.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
API Timeout
API Timeout
Requests timeout after 10 seconds. Returns empty results and continues scanning.
No Results Found
No Results Found
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
Network Error
Network Error
Catches connection errors and continues scan.
Related Documentation
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