Sécuriser la supply chain logicielle

devsecops 13 févr. 2023

Pendant longtemps, la sécurité des logiciels se concentrait sur l’application elle-même.
On testait le code, on verrouillait l’infrastructure, on protégait le réseau.

Mais la réalité moderne est différente.
La majorité des applications actuelles ne sont pas construites uniquement avec du code interne.
Elles reposent sur :

  • des bibliothèques open-source,
  • des conteneurs préconstruits,
  • des scripts,
  • des outils CI CD,
  • des services cloud,
  • des pipelines automatisés.

Ce modèle crée une nouvelle surface d’attaque : la supply chain logicielle.

Ce que l’on déploie ne dépend plus seulement de ce que l’on écrit.
Il dépend aussi de ce que l’on importe.

Pourquoi la supply chain logicielle est devenue un enjeu critique

Plusieurs incidents ont révélé le danger de dépendances compromises ou de chaînes de compilation manipulées.

Exemples marquants :

  • SolarWinds (2020) : compromission d’une mise à jour → impact mondial.
  • Log4Shell (2021) : vulnérabilité dans une bibliothèque, exploitée massivement.
  • XZ Utils Backdoor (2024) : attaque ciblée sur un composant critique Linux.

Ces événements montrent que le risque ne vient pas toujours de ce que l’on construit, mais de ce qui construit ce que l’on construit.


Les trois dimensions de la supply chain security

Pour sécuriser la supply chain logicielle, trois axes doivent être maîtrisés.

1. La provenance (d’où vient le code ?)

Comprendre l’origine du code est indispensable avant de l’intégrer.
On vérifie si la dépendance est fiable, si la version est encore maintenue, si la source est légitime et si la distribution n’a pas été altérée.
Pour cela, on s’appuie sur l’analyse de composition logicielle, la validation des éditeurs et des mécanismes cryptographiques qui permettent de confirmer l’authenticité du code.

Élément vérifiéDescription
Fiabilité de la dépendanceLa dépendance est-elle connue, stable et utilisée dans l’écosystème ?
Version maintenueLes mises à jour et correctifs sont-ils toujours fournis ?
Source légitimeLe code provient-il d’un éditeur ou d’un dépôt authentifié ?
Intégrité de la distributionLe paquet n’a-t-il pas été altéré ou compromis ?
SCA (Software Composition Analysis)Analyse automatisée des dépendances et de leurs risques.
Validation d’éditeurVérification de l’identité du fournisseur.
Vérification cryptographiqueContrôle des signatures et hachages.

2. L’intégrité (le code a-t-il été modifié ?)

L’intégrité vise à garantir que le code, les images conteneurs ou les artefacts n’ont subi aucune altération malveillante au cours du développement ou du pipeline.
Les signatures cryptographiques assurent cette continuité : si un artefact n’est pas signé, il ne peut pas être considéré comme fiable, même s’il semble fonctionner correctement.

Élément concernéRisque couvertMéthode utilisée
Code sourceModification malveillanteContrôles d’intégrité, signatures
Image conteneurAltération ou injectionSignature d’image (cosign, notary, etc.)
Artefacts de buildCorruption ou falsificationChaîne de confiance signée
Signatures cryptographiquesPreuve d’authenticitéGarantissent la véracité des artefacts
Un artefact non signé n’est pas fiable, même s’il fonctionne.

3. La transparence (que déployons-nous réellement ?)

La transparence consiste à savoir exactement ce que contient l’application déployée. Une SBOM (Software Bill of Materials) offre une vision détaillée des bibliothèques, de leurs versions, de leurs licences et des vulnérabilités connues.
Cette visibilité facilite le travail de correction, d’audit et répond aux exigences réglementaires de plus en plus fréquentes dans les organisations.

Contenu identifiéUtilité
BibliothèquesIdentification des composants réels du logiciel
VersionsSuivi des mises à jour et risques associés
LicencesConformité juridique
Vulnérabilités connuesAnticipation des risques de sécurité
SBOMDocumentation structurée et exploitable pour audits et remédiations

Les frameworks et normes émergentes

Pour structurer cette sécurité, plusieurs référentiels apparaissent.

📍 SLSA (Supply-chain Levels for Software Artifacts)

SLSA est un cadre proposé par Google pour renforcer la sécurité de la chaîne d’approvisionnement logicielle. Il définit quatre niveaux de maturité, chacun ajoutant des garanties supplémentaires sur la façon dont un logiciel est construit, vérifié et distribué.
Plus on monte dans les niveaux, plus la confiance augmente : on sait d’où vient le code, comment il a été compilé, et surtout qu’aucune modification malveillante n’a pu s'insérer dans la chaîne.

Concrètement, un niveau SLSA élevé signifie que :

  • la provenance du code est prouvée et traçable,
  • l’artefact final est sécurisé et signé,
  • la chaîne CI/CD est verrouillée, isolée et surveillée contre les altérations.

C’est aujourd’hui l’une des références majeures pour mettre en place une chaîne de confiance complète, du code source jusqu’au déploiement.

📍 SSDF (NIST Secure Software Development Framework)

Le SSDF est un cadre du NIST qui définit les pratiques essentielles pour un développement logiciel sécurisé.
Là où SLSA se concentre sur la chaîne d’approvisionnement, le SSDF couvre toute la gouvernance du cycle de vie logiciel, depuis la conception jusqu’à l’exploitation.

Il est utilisé dans de nombreux environnements réglementés (secteur public, banques, santé, industries critiques).
Il encourage notamment :

  • l’intégration précoce de la sécurité dans les pratiques de développement,
  • la gestion structurée des vulnérabilités,
  • la documentation et la conformité,
  • la responsabilisation des équipes par des processus mesurables.

Le SSDF sert souvent de référentiel organisationnel pour structurer une démarche DevSecOps au niveau entreprise.

📍 CIS Benchmarks / Cloud Security Posture Management (CSPM)

Les CIS Benchmarks sont des recommandations publiées par le Center for Internet Security. Elles définissent les paramètres de sécurité recommandés pour les systèmes, applications et surtout les environnements cloud.

Ils sont essentiels car les plateformes cloud sont rarement sécurisées par défaut :
des accès trop larges, des services publics sans nécessité, des configurations faibles ou des logs inexploités peuvent rapidement devenir des failles critiques.

Le Cloud Security Posture Management (CSPM) vient compléter cela en automatisant :

  • la détection de mauvaises configurations,
  • la correction des écarts,
  • la conformité continue aux standards (comme CIS, NIST, ISO, etc.).

C’est aujourd’hui un pilier de la sécurité cloud moderne : observer, analyser et corriger en continu pour réduire la surface d’attaque.


Pratiques pour sécuriser la supply chain

Cette sécurité se met en place progressivement.

Voici les leviers essentiels :

  • SBOM automatique,
  • signature des artefacts,
  • images conteneurs validées,
  • dépendances minimales et surveillées,
  • scans réguliers des registres (container registries),
  • politique “deny unknown” sur pipelines et runtimes,
  • rotation des secrets et identité machine.
chaîne développement → build → artefacts → registry → déploiement avec verrous de sécurité

Un changement de philosophie

Sécuriser la supply chain logicielle demande une posture nouvelle.

On ne sécurise plus seulement ce qu’on écrit, mais ce qu’on assemble et ce qui exécute l’assemblage.

La confiance devient explicite, jamais implicite.

En résumé

La sécurité logicielle ne dépend plus uniquement du code interne.
Elle dépend de tout ce qui participe à sa création.

Securing the Software Supply Chain est devenu un pilier du DevSecOps moderne.

On ne protège plus seulement le produit.
On protège tout ce qui le rend possible.
DevSecOps
Pourquoi la sécurité ne peut plus être “après”Pendant longtemps, la sécurité intervenait à la fin du cycle de développement. Aujourd’hui, ce modèle n’est plus viable. DevSecOps propose une approche où la sécurité s’intègre tout au long du flux.WeAreDevOpsDavy LassechereDevSecOps expliqué simplementDevSecOps peut sembler complexe ou

Mots clés

Davy Lassechere

Ingénieur Coach DevOps