# Documentation du Pipeline SBOM SecuBox 🌐 **Langues :** [English](../docs/sbom-pipeline.md) | FranΓ§ais | [δΈ­ζ–‡](../docs-zh/sbom-pipeline.md) ## Vue d'ensemble Le pipeline SBOM (Software Bill of Materials) SecuBox gΓ©nΓ¨re des SBOMs conformes aux normes CycloneDX 1.6 et SPDX 2.3 pour la conformitΓ© Γ  l'Annexe I du Cyber Resilience Act (CRA) europΓ©en. ## Architecture ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Pipeline SBOM SecuBox β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Source A β”‚ β”‚ Source B β”‚ β”‚ Source C β”‚ β”‚ Source D β”‚ β”‚ β”‚ β”‚ OpenWrt β”‚ β”‚ SecuBox β”‚ β”‚ Rootfs β”‚ β”‚ Firmware β”‚ β”‚ β”‚ β”‚ Natif β”‚ β”‚ Feed β”‚ β”‚ Scan β”‚ β”‚ Image β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Packages β”‚ β”‚ Makefiles β”‚ β”‚ Scan Syft β”‚ β”‚ Scan Syft β”‚ β”‚ β”‚ β”‚ .manifest β”‚ β”‚ vars PKG_* β”‚ β”‚ dir:rootfs β”‚ β”‚ file:*.bin β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β–Ό β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Fusion & DΓ©dup β”‚ β”‚ β”‚ β”‚ (jq fusion) β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β–Ό β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Validation β”‚ β”‚ β”‚ β”‚ cyclonedx-cli β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β–Ό β–Ό β–Ό β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Scan CVE β”‚ β”‚Rapport CRAβ”‚ β”‚ Checksums β”‚ β”‚ β”‚ β”‚ (grype) β”‚ β”‚ RΓ©sumΓ© β”‚ β”‚ sha256sum β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ Fichiers de sortie : β”œβ”€β”€ secubox-VERSION.cdx.json # CycloneDX 1.6 (principal) β”œβ”€β”€ secubox-VERSION.spdx.json # SPDX 2.3 (alternatif) β”œβ”€β”€ secubox-VERSION-cve-report.json # RΓ©sultats du scan CVE Grype β”œβ”€β”€ secubox-VERSION-cve-table.txt # Table CVE lisible β”œβ”€β”€ secubox-VERSION-cra-summary.txt # RΓ©sumΓ© de conformitΓ© CRA β”œβ”€β”€ sbom-warnings.txt # Avertissements mΓ©tadonnΓ©es manquantes └── checksums.sha256 # Sommes de contrΓ΄le d'intΓ©gritΓ© ``` ## PrΓ©requis ### Versions minimales | Outil | Version minimale | Utilisation | |-------|------------------|-------------| | OpenWrt | 22.03 | Support SBOM natif | | Perl | 5.26+ | package-metadata.pl | | jq | 1.6+ | Traitement JSON | | Syft | 0.100+ | Scan du systΓ¨me de fichiers | | Grype | 0.70+ | Scan CVE | | cyclonedx-cli | 0.25+ | Validation SBOM | ### Configuration de l'environnement ```bash # VΓ©rifier les prΓ©requis ./scripts/check-sbom-prereqs.sh # Installer les outils SBOM (si absents) # Syft curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b ~/.local/bin # Grype curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b ~/.local/bin # cyclonedx-cli curl -sSfL -o ~/.local/bin/cyclonedx-cli \ https://github.com/CycloneDX/cyclonedx-cli/releases/latest/download/cyclonedx-linux-x64 chmod +x ~/.local/bin/cyclonedx-cli # Ajouter au PATH export PATH="$HOME/.local/bin:$PATH" ``` ### Configuration OpenWrt Kconfig Activer la gΓ©nΓ©ration SBOM native dans `.config` : ``` CONFIG_JSON_CYCLONEDX_SBOM=y CONFIG_COLLECT_KERNEL_DEBUG=n ``` ## Utilisation ### DΓ©veloppement quotidien ```bash # GΓ©nΓ©ration SBOM complΓ¨te (4 sources) ./scripts/sbom-generate.sh # SBOM rapide depuis artefacts existants (sans reconstruction) ./scripts/sbom-generate.sh --version 0.20 # Mode hors ligne (sans rΓ©seau, utilise les bases de donnΓ©es en cache) ./scripts/sbom-generate.sh --offline # Ignorer le scan CVE (plus rapide) ./scripts/sbom-generate.sh --no-cve ``` ### Utilisation des cibles Makefile ```bash # Build complet + SBOM make sbom # SBOM uniquement (sans reconstruction) make sbom-quick # Valider un SBOM existant make sbom-validate # Scan CVE uniquement make sbom-scan # Nettoyer les sorties SBOM make sbom-clean # Afficher l'aide make sbom-help ``` ### Audit des packages du Feed ```bash # VΓ©rifier tous les packages du feed SecuBox pour mΓ©tadonnΓ©es manquantes ./scripts/sbom-audit-feed.sh # Sortie : feeds/secubox/MANIFEST.md ``` ## Ajouter un nouveau package Lors de l'ajout d'un nouveau package au feed SecuBox, assurez-vous de la compatibilitΓ© SBOM : ### Liste de vΓ©rification - [ ] **PKG_NAME** dΓ©fini - [ ] **PKG_VERSION** dΓ©fini - [ ] **PKG_LICENSE** dΓ©fini (identifiant SPDX) - [ ] **PKG_HASH** dΓ©fini (sha256) - [ ] **PKG_SOURCE_URL** dΓ©fini (optionnel mais recommandΓ©) ### Exemple de Makefile ```makefile include $(TOPDIR)/rules.mk PKG_NAME:=my-package PKG_VERSION:=1.0.0 PKG_RELEASE:=1 PKG_SOURCE_URL:=https://github.com/example/my-package/archive PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_HASH:=a1b2c3d4e5f6... # sha256sum de l'archive source PKG_LICENSE:=MIT PKG_LICENSE_FILES:=LICENSE PKG_MAINTAINER:=Votre Nom ``` ### Calculer PKG_HASH ```bash # TΓ©lΓ©charger et hasher la source wget https://example.com/package-1.0.0.tar.gz sha256sum package-1.0.0.tar.gz # Ou utiliser l'assistant de tΓ©lΓ©chargement OpenWrt make package/my-package/download V=s sha256sum dl/my-package-1.0.0.tar.gz ``` ## Correspondance Annexe I CRA | Exigence CRA | ImplΓ©mentation SBOM | |--------------|---------------------| | Art. 13(5) - Identification des composants | `components[].purl` (Package URL) | | Art. 13(5) - Identification du fournisseur | `metadata.component.supplier` | | Art. 13(5) - Information de version | `components[].version` | | Art. 13(5) - DΓ©pendances | Tableau `dependencies[]` | | Art. 13(5) - Information de licence | `components[].licenses[]` | | Art. 13(6) - Format lisible par machine | CycloneDX 1.6 JSON + SPDX 2.3 | | Art. 13(6) - Divulgation des vulnΓ©rabilitΓ©s | SECURITY.md + documents VEX | | Art. 13(7) - Identification unique | PURL + UUID `serialNumber` | | Annexe I(2) - VΓ©rification d'intΓ©gritΓ© | `hashes[]` avec SHA-256 | ## Soumission ANSSI CSPN Pour la certification CSPN, incluez les Γ©lΓ©ments suivants dans votre dossier : ### Documents requis 1. **Fichiers SBOM** - `secubox-VERSION.cdx.json` (principal) - `secubox-VERSION.spdx.json` (alternatif) 2. **Provenance** - `checksums.sha256` (vΓ©rification d'intΓ©gritΓ©) - Hash du commit Git depuis les mΓ©tadonnΓ©es 3. **Analyse des vulnΓ©rabilitΓ©s** - `secubox-VERSION-cve-report.json` - `secubox-VERSION-cra-summary.txt` 4. **Documentation du processus** - Ce document (`docs/sbom-pipeline.md`) - `SECURITY.md` (politique de divulgation des vulnΓ©rabilitΓ©s) ### Liste de vΓ©rification pour la soumission - [ ] Tous les composants ont PKG_HASH et PKG_LICENSE - [ ] Le SBOM est validΓ© avec cyclonedx-cli - [ ] Aucune CVE Critique non traitΓ©e - [ ] Le document VEX explique les risques acceptΓ©s - [ ] ReproductibilitΓ© SOURCE_DATE_EPOCH vΓ©rifiΓ©e ## DΓ©pannage ### Erreurs courantes #### "OpenWrt version < 22.03" Le support SBOM CycloneDX natif nΓ©cessite OpenWrt 22.03 ou ultΓ©rieur. **Solution :** Mettez Γ  jour votre fork OpenWrt ou utilisez `sbom-generate.sh` sans support natif (il se rabattra sur l'analyse des Makefiles). #### "package-metadata.pl not found" Le script de gΓ©nΓ©ration SBOM est absent de votre checkout OpenWrt. **Solution :** ```bash git checkout origin/master -- scripts/package-metadata.pl ``` #### "syft: command not found" Syft n'est pas installΓ© ou n'est pas dans le PATH. **Solution :** ```bash curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b ~/.local/bin export PATH="$HOME/.local/bin:$PATH" ``` #### "SBOM validation failed" Le SBOM gΓ©nΓ©rΓ© contient des erreurs de schΓ©ma. **Solution :** 1. VΓ©rifiez `sbom-warnings.txt` pour les mΓ©tadonnΓ©es manquantes 2. Corrigez les Makefiles avec PKG_HASH ou PKG_LICENSE manquants 3. RΓ©gΓ©nΓ©rez le SBOM #### "Grype database update failed" ProblΓ¨me de connectivitΓ© rΓ©seau ou limitation de dΓ©bit. **Solution :** - Utilisez le mode `--offline` avec la base de donnΓ©es en cache - Ou mettez Γ  jour manuellement : `grype db update` ### Mode dΓ©bogage ```bash # Sortie verbeuse DEBUG=1 ./scripts/sbom-generate.sh # Conserver les fichiers intermΓ©diaires KEEP_TEMP=1 ./scripts/sbom-generate.sh ``` ## Historique des versions | Version | Date | Modifications | |---------|------|---------------| | 1.0 | 2026-03-04 | ImplΓ©mentation initiale du pipeline | --- _Maintenu par CyberMind Produits SASU_ _Contact : secubox@cybermind.fr_