Tests de sécurité de la chaîne d'approvisionnement
ACTION REQUISE (à lire et exécuter immédiatement)
MAINTENANT: Lire../field-journal/precedent-pentest.md— confirmer que l'opération de cette compétence est une opération régulière autoriséeMAINTENANT: Confirmer que la tâche actuelle entre dans le champ d'application de cette compétenceSUIVANT: Lire../tool-index.mdpour vérifier la disponibilité des outils et les chemins réelsSUIVANT: En cas d'outil manquant, appeler bootstrap, ne pas deviner de cheminsAGIR: Entrer dans la première étape du "workflow" et exécuter, ne pas rester en attente de confirmation
SBOM / SCA / Pipeline CI/CD / Traçabilité des dépendances Piloté par la réglementation : Executive Order SBOM des États-Unis, normes nationales chinoises, EU CRA
Scénarios d'application
- Évaluation de la sécurité de la chaîne d'approvisionnement logicielle
- Analyse et vérification des vulnérabilités des dépendances open source
- Audit de sécurité des pipelines CI/CD
- Analyse de sécurité des images conteneur
- Audit de conformité des composants tiers
- Traçabilité et intégrité des artefacts de construction
Cadre de gouvernance en six couches de la chaîne d'approvisionnement
Couche 1 : Évaluation de la confiance dans le code source → Examen du dépôt en amont/mainteneur/historique des publications
Couche 2 : Intégration du pipeline de construction → Passerelles de sécurité CI/CD, vérification des signatures
Couche 3 : Intégrité de la distribution des artefacts → Signatures, sommes de contrôle, SBOM attaché
Couche 4 : Protection à l'exécution → Analyse des conteneurs, contrôle d'admission
Couche 5 : Surveillance continue → Suivi en temps réel des CVE, analyse de l'accessibilité des vulnérabilités
Couche 6 : Réponse aux incidents → Réponse d'urgence aux attaques de la chaîne d'approvisionnement, stratégies de rollback
Workflow
1. Génération et audit de SBOM
Génération de SBOM :
□ Format CycloneDX : cdxgen → bom.json
□ Format SPDX : sbom-tool generate
□ Syft : syft <image|dir> -o spdx-json
Points d'audit :
□ Existence de dépendances inconnues/non autorisées
□ Présence de paquets obsolètes/abandonnés
□ Détection de conflits de licences
□ Liste des dépendances directes vs transitives
□ Chronologie de publication et statut du mainteneur pour chaque composant
2. Analyse de composition logicielle (SCA)
# OSV-Scanner (gratuit, maintenu par Google)
osv-scanner scan -r . --format json
# OWASP Dependency-Track (surveillance continue niveau entreprise)
docker run -p 8080:8080 dependencytrack/apiserver
# → Télécharger SBOM → Correspondance automatique avec NVD/OSV/GitHub Advisory
# Snyk (commercial)
snyk test --all-projects
snyk monitor # Surveillance continue
# Trivy (conteneur + dépendances + IaC)
trivy fs . # Analyse du système de fichiers
trivy image nginx # Image conteneur
trivy config . # Configuration IaC
3. Validation de l'accessibilité des vulnérabilités
Alerte SCA ≠ Risque réel ! La plupart des outils SCA n'ont qu'environ 15 % d'alertes réellement exploitables.
Étapes de validation :
1. Obtenir la liste des CVE avec Dependency-Track ou Trivy
2. Filtrer les vulnérabilités avec CVSS ≥ 7.0
3. Pour les CVE avec PoC, effectuer une analyse d'accessibilité
- Découpage du Code Property Graph : tracer le chemin de l'entrée utilisateur jusqu'à la fonction vulnérable
- Méthode DEPTEX : EPD (Execution Path Dominance) + validation sémantique par LLM
4. Valider le PoC dans un environnement isolé
5. Prioriser la correction des vulnérabilités accessibles en fonction de l'impact réel
Références d'outils :
- CodeQL : Requêtes de code GitHub → Analyse de flux de données
- Snyk Code : Marquage d'accessibilité
- DEPTEX : Évaluation des risques contextuelle assistée par LLM
4. Sécurité du pipeline CI/CD
Points de contrôle de sécurité :
□ Soumission du code → pre-commit hook : gitleaks (analyse des secrets)
□ Phase PR → Analyse SCA (Trivy/OSV-Scanner)
□ Phase de construction → Signature des artefacts (cosign)
□ Phase de push → SBOM attaché (syft + attest)
□ Phase de déploiement → Contrôle d'admission (OPA/Kyverno + analyse d'image)
□ Exécution → Surveillance continue des vulnérabilités (Dependency-Track)
Sécurité du pipeline lui-même :
□ Audit du Pipeline as Code (injection de configuration GitHub Actions / GitLab CI)
□ Isolation des runners (empêcher les builds malveillants de percer le conteneur)
□ Gestion des secrets (Actions Secrets / Vault, interdiction du codage en dur)
□ Examen des actions tierces (verrouillage du commit SHA, pas de tag)
5. Sécurité des images conteneur
# Audit du Dockerfile
hadolint Dockerfile
# Analyse d'image (multi-couche : OS + dépendances applicatives + configuration)
trivy image --severity HIGH,CRITICAL nginx:latest
# Image de base minimale
# Priorité : distroless → alpine → slim → éviter latest
docker scout quickview nginx:latest
# Signature d'image
cosign sign --key cosign.key myimage:tag
cosign verify --key cosign.pub myimage:tag
6. Examen des dépendances tierces
Checklist d'ajout d'une nouvelle dépendance :
□ État de maintenance : Commit récent au cours des 6 derniers mois ? Activité du mainteneur ?
□ Historique de sécurité : A-t-elle déjà contenu du code malveillant ?
□ Arbre de dépendances : Combien de dépendances transitives sont ajoutées ?
□ Licence : Compatible avec la licence du projet ?
□ Alternatives : Existe-t-il des alternatives plus sûres (score Snyk Advisor / Socket.dev) ?
Matrice d'évaluation des risques :
Maintenance élevée × Faible nombre de dépendances × Licence compatible → Faible risque
Maintenance faible × Nombre élevé de dépendances × Conflit de licence → Risque élevé
Chaîne d'outils
| Outil | Utilisation | Obtention |
|---|---|---|
| OWASP Dependency-Track | SCA continue niveau entreprise | docker pull dependencytrack/apiserver |
| OSV-Scanner | SCA gratuit (écosystème OSV.dev) | go install github.com/google/osv-scanner |
| Trivy | Analyse image + dépendances + IaC | apt install trivy |
| Syft | Génération SBOM | curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh |
| cdxgen | Génération SBOM CycloneDX | npm install -g @cyclonedx/cdxgen |
| Cosign | Signature de conteneur | go install github.com/sigstore/cosign/v2/cmd/cosign |
| Gitleaks | Analyse de secrets/credentials | go install github.com/gitleaks/gitleaks/v8 |
| Snyk | SCA commercial + accessibilité | npm install -g snyk |
| CodeQL | Requêtes de code + flux de données | Intégré dans GitHub Actions |
Références
references/sbom-sca-methodology.md— Méthodologie SBOM + SCAreferences/cicd-pipeline-security.md— Audit de sécurité CI/CD
Auto-vérification de la tâche (DOIT être réussie avant de déclarer la tâche terminée)
- Ai-je exécuté chaque étape du workflow (et pas seulement lu) ?
- Ai-je utilisé les chemins d'outils réels basés sur
tool-index? - Ai-je produit des preuves reproductibles (commandes/scripts/captures d'écran/rapports) ?
- Ai-je complété et renseigné les éléments de checklist requis par RULES ?