Skip to main content

CLI tool to match COTS inventories against NVD CVE feeds.

Project description

parse-nvd

parse-nvd est un outil en ligne de commande qui rapproche un inventaire de COTS (Commercial Off-The-Shelf) avec les vulnérabilités CVE publiées dans les exports JSON du NVD.

Pourquoi cet outil

Dans un contexte d'analyse de risque, il est fréquent de disposer:

  • d'un inventaire produit/version (COTS),
  • de flux NVD volumineux,
  • de critères de criticité CVSS.

L'outil automatise ce rapprochement pour produire un rapport exploitable rapidement:

  • filtrage des CVE par score, vecteur et impacts CVSS,
  • filtrage optionnel sur la présence d'exploit,
  • sortie JSON pour traitement machine,
  • sortie Markdown/PDF pour diffusion humaine.

Fonctionnement général

  1. Validation des fichiers NVD avec le schéma officiel local.
  2. Extraction des métriques CVSS pertinentes.
  3. Matching COTS/CPE et comparaison de versions.
  4. Application des filtres demandés.
  5. Génération de rapports JSON et optionnellement Markdown.

Installation

pip install -e .

Utilisation depuis les sources (sans installation)

Depuis la racine du projet, vous pouvez lancer le CLI directement avec le code source:

PYTHONPATH=src python -m parse_nvd \
  --nvd-db nvdcve-2.0-recent.json \
  --cots-list essai-cots.json \
  --output rapport.json

Cela permet d'utiliser l'outil sans pip install, pratique pour un test rapide ou en environnement CI.

Arguments CLI

  • --nvd-db FILE [FILE ...] Un ou plusieurs fichiers JSON NVD.
  • --cots-list FILE Fichier JSON listant les COTS (name/version).
  • --cvss-min FLOAT Score CVSS minimal.
  • --cvss-av VALUE Vecteur d'attaque minimal (NETWORK, ADJACENT, LOCAL, PHYSICAL).
  • --cvss-impact-c VALUE Impact confidentialité minimal (NONE, LOW, HIGH).
  • --cvss-impact-i VALUE Impact intégrité minimal (NONE, LOW, HIGH).
  • --cvss-impact-d VALUE Impact disponibilité minimal (NONE, LOW, HIGH).
  • --with-exploit Ne garde que les CVE présentant un indice d'exploit.
  • --output FILE Fichier de sortie JSON (défaut: parse-nvd-report.json).
  • --md FILE Génère aussi un rapport Markdown.
  • --verbose Affiche un résumé synthétique dans la console.

Exemples d'utilisation

JSON uniquement

parse-nvd \
  --nvd-db nvdcve-2.0-recent.json \
  --cots-list essai-cots.json \
  --output rapport.json

Avec filtres CVSS et exploit

parse-nvd \
  --nvd-db nvdcve-2.0-recent.json \
  --cots-list essai-cots.json \
  --cvss-min 7.0 \
  --cvss-av NETWORK \
  --cvss-impact-c LOW \
  --cvss-impact-i LOW \
  --cvss-impact-d LOW \
  --with-exploit \
  --verbose \
  --md rapport.md \
  --output rapport.json

Structure du rapport JSON

Le rapport généré contient:

  • un bloc summary avec les filtres appliqués et les compteurs globaux,
  • un bloc cots contenant, pour chaque entrée COTS, la liste des CVE associées,
  • pour chaque CVE: le bloc cve, la métrique cvss normalisée, les critères CPE matchés, et l'indicateur exploit_available.

Rapport Markdown et PDF

Générer le Markdown depuis le CLI

parse-nvd \
  --nvd-db nvdcve-2.0-recent.json \
  --cots-list essai-cots.json \
  --md report.md \
  --output report.json

Générer le PDF depuis le Markdown

pandoc report.md -o report.html
python -m weasyprint --stylesheet docs/report-a4.css report.html report.pdf

Le style docs/report-a4.css est prévu pour une lecture correcte à l'impression A4.

Documentation développeur

Le projet peut générer un mini site de documentation dans docs/site:

  • docs/site/index.html pour l'accueil,
  • docs/site/cli-arguments.html pour les arguments CLI et leur signification,
  • pages HTML des modules Python.

Développement

tox
tox -e pydoc
tox -e report-pdf
pytest -q
python -m build

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

parse_nvd-0.2.0-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

Details for the file parse_nvd-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: parse_nvd-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 16.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for parse_nvd-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b16bb150f694c568b64cc45cdf34b148529ba7faebc64ec10a4cd52a0d39ac21
MD5 44dfd6fa1f5e08a6534ab7b3f35fec67
BLAKE2b-256 3d9bfb810f9f2a328ec554f3e9247cf5ed77c0a93c2c32516b730885b0e70a5c

See more details on using hashes here.

Supported by

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