Défaillances de la chaîne d'approvisionnement logicielle

- Comprendre qu'un site peut rester vulnérable même si son propre code n'a jamais changé, à cause des bibliothèques tierces (dépendances) qu'il utilise (Software Supply Chain Failures, n°3 du Top 10 de l'OWASP (2025)).
- Apprendre à utiliser
composer auditpour détecter des failles de sécurité déjà publiées dans les dépendances d'un projet PHP.
Un projet PHP moderne n'est presque jamais composé uniquement de code écrit par son équipe : il s'appuie sur des dizaines de bibliothèques externes, elles-mêmes construites sur d'autres bibliothèques. Une seule de ces briques, oubliée et jamais mise à jour, suffit à rendre tout l'édifice vulnérable, sans qu'une seule ligne du code du site n'ait jamais changé.
1. Création du projet vulnérable
Créez un dossier tp-dependances contenant un fichier composer.json, qui installe une ancienne
version d'une bibliothèque très utilisée, guzzlehttp/guzzle (un client HTTP, qui permettrait au
site du club de randonnée d'interroger un service météo externe, par exemple) :
{
"require": {
"guzzlehttp/guzzle": "6.3.0"
},
"config": {
"audit": {
"block-insecure": false
}
}
}
Installez cette dépendance :
composer install
L'option audit.block-insecure à false est nécessaire ici uniquement pour les besoins de ce
TP : les versions récentes de Composer refusent désormais, par défaut, d'installer une
dépendance déjà connue comme vulnérable. Vous venez de découvrir, avant même la première ligne de
ce TP, une protection déjà intégrée à votre outillage ! Nous la désactivons volontairement, le
temps d'observer la faille, exactement comme le ferait un projet démarré avant l'existence de cette
protection, ou sur une version plus ancienne de Composer.