Illustration : Dépendances open source : détecter les bibliothèques vulnérables et automatiser les alertes

Dépendances open source : détecter les bibliothèques vulnérables et automatiser les alertes

Une application web moderne embarque des centaines, parfois des milliers de bibliothèques open source, dont la plupart sont des dépendances de dépendances que personne n’a choisies consciemment. Deux risques en découlent : les vulnérabilités connues, publiées chaque jour, et les paquets malveillants, de plus en plus fréquents. En mars 2026, deux versions piégées de la bibliothèque Axios sont restées en ligne environ trois heures ; en mai, le ver Mini Shai-Hulud a compromis 172 paquets npm et PyPI en 48 heures. Voici comment détecter, prioriser et automatiser sans noyer les développeurs sous les alertes.

L’essentiel en 30 secondes

  • Versionnez les fichiers de verrouillage et installez en mode strict (npm ci, pip install --require-hashes).
  • Analysez les dépendances à chaque modification et chaque jour sur les versions en production.
  • Priorisez : vulnérabilité exploitée activement, composant réellement utilisé, correctif disponible.
  • Automatisez les mises à jour avec Dependabot ou Renovate, avec un délai de quelques jours avant d’adopter une nouvelle version, pour laisser le temps de détecter les paquets piégés.

Deux menaces différentes

Vulnérabilité connue Paquet malveillant
Nature Erreur dans un code légitime (CVE) Code volontairement piégé, souvent après le vol du compte d’un mainteneur
Moment du danger En production, quand la faille est exploitée Dès l’installation (scripts preinstall) : poste du développeur et pipeline
Détection Bases de vulnérabilités (OSV, GitHub Advisory, NVD) Avis de sécurité, outils d’analyse de comportement des paquets
Parade principale Mise à jour vers une version corrigée Versions verrouillées, délai d’adoption, scripts d’installation désactivés, rotation des secrets si exposé

Détecter les vulnérabilités

# Multi-langages, base OSV (Google)
osv-scanner scan source -r .

# Outils propres à chaque écosystème
npm audit --omit=dev
pip-audit -r requirements.txt
composer audit
govulncheck ./...

Intégrez l’un de ces outils dans le pipeline et dans la revue des pull requests (l’action dependency-review de GitHub bloque l’ajout d’une dépendance vulnérable). Pour les images de conteneurs, utilisez un scanner comme Trivy, et pour un suivi continu de toutes vos applications, des SBOM réanalysés chaque jour.

Prioriser sans se noyer

  1. Exploitée activement ? Présence dans le catalogue KEV de la CISA : traitement immédiat.
  2. Probabilité d’exploitation : le score EPSS (FIRST) estime la probabilité d’exploitation dans les 30 jours.
  3. Atteignable ? La fonction vulnérable est-elle réellement appelée par votre code ? Certains outils (govulncheck, analyses d’accessibilité) le déterminent.
  4. Exposition : application publique ou outil interne, dépendance de production ou de développement.
  5. Correctif disponible ? Sinon, mesure de contournement ou remplacement de la bibliothèque.

Automatiser les mises à jour

# .github/dependabot.yml
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    cooldown:
      default-days: 7
    groups:
      dependances-de-developpement:
        dependency-type: "development"
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"
  • Le délai de refroidissement (cooldown chez Dependabot, minimumReleaseAge chez Renovate et pnpm) évite d’installer une version publiée il y a quelques heures, période où la plupart des paquets piégés sont détectés et retirés. Les correctifs de sécurité urgents peuvent être traités à part.
  • Les regroupements réduisent le nombre de pull requests.
  • Une bonne couverture de tests est ce qui permet de fusionner les mises à jour sereinement.
  • N’oubliez pas les actions GitHub elles-mêmes, épinglées par SHA (voir sécuriser ses pipelines).

Se protéger des paquets malveillants

  • Désactiver les scripts d’installation quand c’est possible (npm ci --ignore-scripts, ou les listes d’autorisation de scripts de pnpm) : le ver Mini Shai-Hulud s’exécutait au moment de l’installation.
  • Isoler les installations dans le pipeline et sur les postes : pas de secrets de production accessibles là où l’on installe des dépendances.
  • Surveiller les avis et réagir vite : en cas de paquet compromis installé, considérer comme exposés tous les secrets présents sur la machine (jetons npm et GitHub, clés cloud, clés d’API d’IA) et les faire tourner.
  • Côté mainteneur : publication de confiance (OIDC), double authentification, jetons à durée limitée.

Ces principes valent aussi pour un site WordPress : chaque extension est une dépendance. Voir les mesures de durcissement de WordPress.

Questions fréquentes

Faut-il corriger toutes les vulnérabilités signalées ?

Non, mais il faut les qualifier toutes. Une vulnérabilité non exploitable dans votre contexte peut être documentée et acceptée, avec une date de réexamen.

Épingler les versions suffit-il contre les paquets malveillants ?

Cela évite d’installer automatiquement une nouvelle version piégée, mais ne protège pas lorsque vous mettez à jour. D’où l’intérêt du délai d’adoption et de la surveillance.

Quelle fréquence pour les mises à jour ?

Hebdomadaire pour les mises à jour courantes, immédiate pour les vulnérabilités exploitées. Des mises à jour régulières et petites sont beaucoup moins risquées qu’un rattrapage annuel.

Que faire d’une bibliothèque abandonnée ?

La remplacer par une alternative maintenue, ou la reprendre en interne si elle est critique. Une dépendance sans mainteneur ne recevra plus de correctifs.

Sources

Besoin d’un accompagnement ?

MPCÂBLE Solutions Informatiques (MPCSI) accompagne particuliers, entreprises, associations et collectivités depuis Gaudiès, en Ariège : sur site en Occitanie, principalement dans un rayon de 40 km (Pamiers, Foix, Mirepoix, Saverdun, Castelnaudary), et à distance partout en France. Nous auditons la sécurité de vos applications lors d’un audit. Demandez un devis gratuit ou appelez le 05 32 42 99 98.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *