- Les notifications excessives de Dependabot font perdre du temps aux développeurs au lieu de les aider à résoudre de vrais problèmes de sécurité
- Comme l’a montré un cas survenu dans l’écosystème Go, des milliers de PR et d’alertes sont générées même pour des dépôts non affectés, ce qui crée de la confusion
- En utilisant une GitHub Action basée sur
govulncheck, il est possible de détecter uniquement le code réellement vulnérable et d’éliminer les alertes inutiles
- Pour les mises à jour de dépendances, il est plus sûr et plus efficace de les gérer via des tests périodiques et une validation des versions les plus récentes plutôt qu’avec des PR automatisées
- Cette approche est importante pour réduire la fatigue liée aux alertes (alert fatigue) et alléger la charge des mainteneurs open source
Les problèmes de Dependabot
- Dependabot génère en masse des alertes de sécurité et des PR automatiques, ce qui complique l’identification des vrais problèmes importants pour les développeurs
- Une modification mineure du paquet Go
filippo.io/edwards25519 a suffi à déclencher des milliers de PR
- Des alertes de sécurité erronées ont aussi été envoyées à des dépôts non affectés, comme Wycheproof
- Les alertes incluent des scores CVSS erronés et de faibles indicateurs de compatibilité, alimentant une inquiétude inutile
- Cet excès de notifications est présenté comme une cause de baisse de fiabilité et d’efficacité dans la réponse aux incidents de sécurité
Une alternative avec govulncheck
- La Go Vulnerability Database fournit des métadonnées détaillées au niveau des versions, des paquets et des symboles
- Par exemple, la vulnérabilité
GO-2026-4503 n’affecte que le symbole Point.MultiScalarMult
- govulncheck utilise l’analyse statique pour détecter uniquement le code vulnérable réellement appelable
- Utilisé avec
go mod why, il permet de déterminer précisément si une dépendance indirecte a un impact
- Même si une vulnérabilité existe, l’outil ne signale rien si le code n’appelle pas le symbole concerné
- L’intégration est simple via la CLI (
govulncheck -json) ou l’API Go (golang.org/x/vuln/scan)
Remplacement par GitHub Actions
- À la place de Dependabot, on peut configurer une GitHub Action
govulncheck pour lancer une vérification automatique chaque jour
- Une notification n’est envoyée que lorsqu’une vraie vulnérabilité est détectée
- Comme aucune PR automatique n’est créée, les développeurs peuvent se concentrer sur les enjeux de sécurité réellement importants
- Réduire les fausses alertes permet d’atténuer la fatigue liée aux alertes de sécurité (alert fatigue) et d’améliorer la qualité des réponses
- Cela élimine aussi le problème des PR inutiles envoyées aux mainteneurs open source
Gestion des mises à jour de dépendances
- Les dépendances doivent être gérées de façon groupée selon le cycle de développement propre à chaque projet
- Des tests peuvent être exécutés chaque jour avec les versions les plus récentes, tandis que les mises à jour effectives ne sont effectuées qu’au moment nécessaire
- En Go, il est possible de tester les versions les plus récentes avec
go get -u -t ./..., et en npm avec la commande npm update
- Cette méthode permet de garantir à la fois la rapidité de réaction face aux vulnérabilités et la stabilité
- Les tests sur les dernières versions permettent d’identifier tôt les problèmes de compatibilité
- Elle évite aussi qu’une dépendance contenant du code malveillant soit déployée immédiatement
- Avec geomys/sandboxed-step, l’exécution peut être isolée dans CI via gVisor
Conclusion et contexte de soutien
- L’automatisation de Dependabot génère souvent plus de bruit (noise) que de sécurité
- Une approche fondée sur govulncheck et des tests périodiques constitue une méthode de gestion de la sécurité plus précise et plus durable
- La maintenance open source de l’auteur est soutenue via l’organisation Geomys par des sponsors comme Ava Labs, Teleport, Tailscale et Sentry
- Ce modèle contribue à la pérennité de l’écosystème open source et à l’amélioration de la qualité de la sécurité
Aucun commentaire pour le moment.