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.
  • --created-or-updated-after YYYY-MM-DD Ne garde que les CVE créées ou mises à jour après cette date.
  • --linux-order-by-system Pour linux_kernel uniquement, regroupe les CVE par système Linux impacté dans le rapport Markdown.
  • --output FILE Fichier de sortie JSON (défaut: parse-nvd-report.json).
  • --md FILE Génère aussi un rapport Markdown.
  • --html FILE Génère aussi un rapport XHTML autonome avec style CSS intégré, sans ressource externe.
  • --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 \
  --created-or-updated-after 2026-01-01 \
  --linux-order-by-system \
  --html rapport.xhtml \
  --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 XHTML autonome depuis le CLI

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

Le rapport XHTML embarque son style CSS directement dans la page. Il ne dépend d'aucun accès réseau ni d'aucune ressource externe.

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.3.0-py3-none-any.whl (23.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: parse_nvd-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 23.8 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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 71ca6df80bdfc4e5750e40eb2781869439fe79aa18424eb9030e329e38e461b7
MD5 7ec550f477fd21295f68bb81b61f35de
BLAKE2b-256 55bb49a5940c292aaa3578470601947e61a838a639cba46583885456afd62081

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