Skip to main content

A Python tool that scans software dependencies for known vulnerabilities using NIST's National Vulnerability Database (NVD)

Project description

CVE Vulnerability Scanner

PyPI PyPI Downloads

A Python tool that scans software dependencies for known vulnerabilities using NIST's National Vulnerability Database (NVD).

Features

  • 🔍 Scan software libraries for known vulnerabilities
  • 📝 Generate detailed vulnerability reports in markdown format
  • 🚀 Fast scanning with local caching support
  • 🔑 Uses official NVD API with authentication for better rate limits
  • 📊 Support CSV input format for batch processing
  • 🔄 Cache results to reduce API calls

Installation

# Using pip
pip install cve-vulnerability-scanner

# From source
git clone https://github.com/changyy/py-cve-vulnerability-scanner.git
cd py-cve-vulnerability-scanner
pip install -e .

Usage

Basic Usage

# Set your NVD API key
export NVD_API_KEY='your-api-key-here'

# Run the scanner
cve-vulnerability-scanner packages.csv -o report.md

Input CSV Format

Create a CSV file (packages.csv) with your dependencies:

library_name,version
busybox,1.31.1
libiconv,1.13.1

Command Line Options

cve-vulnerability-scanner --help

Options:
  -i, --input FILE      Input CSV file containing libraries [default: packages.csv]
  -o, --output FILE     Output report file [default: report.md]
  --no-cache           Disable caching
  --cache-dir DIR      Specify cache directory [default: ./cache]
  --verbose            Enable verbose output
  -h, --help           Show this help message
  -v, --version        Show program version

Sample Output

The tool will generate a markdown report like this:

# Vulnerability Scan Report
Generated at: 2024-03-08 10:00:00

## Summary
- Total libraries scanned: 2
- Libraries with vulnerabilities: 1
- Total vulnerabilities found: 30

## Details

### Busybox (1.31.1)
Found 30 vulnerabilities:
1. CVE-2022-28391 (CVSS: 5.5)
   - Description: Integer overflow in Busybox wget applet...
   - Published: 2022-05-20
   - References: [Link]

### libiconv (1.13.1)
No known vulnerabilities found.

Authentication

Get your NVD API key from: https://nvd.nist.gov/developers/request-an-api-key

The API key can be provided in three ways (in order of precedence):

  1. Environment variable: NVD_API_KEY
  2. Config file: ~/.config/cve-scanner/config.ini
  3. Command line argument: --api-key

Development

Setup Development Environment

# Create virtual environment
python -m venv venv
source venv/bin/activate  # Linux/Mac
# or
.\venv\Scripts\activate   # Windows

# Install dependencies
pip install -e ".[dev]"

Running Tests

pytest tests/

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • NIST National Vulnerability Database (NVD) for providing the vulnerability data
  • All contributors who help improve this tool

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cve_vulnerability_scanner-1.0.1.tar.gz (12.1 kB view details)

Uploaded Source

Built Distribution

cve_vulnerability_scanner-1.0.1-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file cve_vulnerability_scanner-1.0.1.tar.gz.

File metadata

File hashes

Hashes for cve_vulnerability_scanner-1.0.1.tar.gz
Algorithm Hash digest
SHA256 5e328c42c52b20ff7fda33cf4be5ad33d64940408cc32b8261e084578a8f115d
MD5 8a307c1d779e0d4886daf73b65a5f9fe
BLAKE2b-256 6054e21cb68b94208599a50a0ee8ad850a08a930d92cf2430dcdd9c794ff2abd

See more details on using hashes here.

Provenance

The following attestation bundles were made for cve_vulnerability_scanner-1.0.1.tar.gz:

Publisher: release.yml on changyy/py-cve-vulnerability-scanner

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cve_vulnerability_scanner-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for cve_vulnerability_scanner-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 eff090a7451fedacc6bbe084a414f2eb053e4b19b8b148c9e9e4818dc94a4d87
MD5 72cc05a83f79b0cf3455f2b6d6a91009
BLAKE2b-256 a72b38c3227de0b0ae6e457fe613c01bb6682d882b1c389ce801895b47c39e1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for cve_vulnerability_scanner-1.0.1-py3-none-any.whl:

Publisher: release.yml on changyy/py-cve-vulnerability-scanner

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page