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
- Validation des fichiers NVD avec le schéma officiel local.
- Extraction des métriques CVSS pertinentes.
- Matching COTS/CPE et comparaison de versions.
- Application des filtres demandés.
- 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71ca6df80bdfc4e5750e40eb2781869439fe79aa18424eb9030e329e38e461b7
|
|
| MD5 |
7ec550f477fd21295f68bb81b61f35de
|
|
| BLAKE2b-256 |
55bb49a5940c292aaa3578470601947e61a838a639cba46583885456afd62081
|