Dependabot a ouvert des milliers de pull requests inutiles cette semaine. Et pas sur un projet obscur : sur des dépôts qui n’étaient même pas concernés par la faille.
Filippo Valsorda, cryptographe reconnu dans l’écosystème Go et mainteneur de bibliothèques utilisées par des centaines de milliers de projets, a publié le 20 février un billet au titre provocateur : « Turn Dependabot Off ». Son argument tient en une phrase. Dependabot, l’outil de GitHub censé protéger les développeurs contre les vulnérabilités dans leurs dépendances, fait plus de bruit qu’il ne rend service.
Le cas qui a tout déclenché
Mardi dernier, Valsorda publie un correctif de sécurité pour sa bibliothèque filippo.io/edwards25519 (cryptographie sur courbes elliptiques). Le bug touche une seule méthode, MultiScalarMult, que quasiment personne n’utilise. La correction ? Une ligne de code.
Le lendemain, Dependabot ouvre des milliers de pull requests sur des dépôts qui dépendent indirectement de cette bibliothèque, via le driver MySQL pour Go (228 000 dépendants sur GitHub). Le problème : ces projets n’appellent jamais la méthode vulnérable. Pire, le dépôt Wycheproof a reçu une alerte alors qu’il n’importe même pas le paquet concerné.
Chaque PR s’accompagne d’un score CVSS v4 que Valsorda qualifie de « fabriqué » et d’un score de compatibilité de 73 %, censé refléter la casse provoquée par la mise à jour. Pour un diff d’une ligne sur une fonction que personne n’appelle.
À lire aussi
Du bruit qui masque les vraies menaces
L’argument de Valsorda va au-delà de l’anecdote. Dependabot ne filtre pas par paquet ni par symbole. Il voit une dépendance vulnérable, il ouvre une PR. Point. Peu importe si votre code touche réellement la partie affectée.
Cette approche crée ce que les développeurs appellent l’« alert fatigue » : noyés sous les fausses alertes, les mainteneurs finissent par ignorer les vraies. Un classique en cybersécurité.
govulncheck, l’alternative qui analyse vraiment le code
Valsorda recommande de remplacer Dependabot par govulncheck, un scanner de vulnérabilités développé par l’équipe Go. La différence ? govulncheck utilise l’analyse statique pour vérifier si votre code appelle réellement le symbole vulnérable. Pas juste si la dépendance est présente dans votre arbre.
Sur le propre projet de Valsorda, qui dépend indirectement de sa bibliothèque via le driver MySQL, govulncheck retourne : « zéro vulnérabilité ». Parce que le code n’atteint jamais la fonction problématique.
En pratique, il propose deux GitHub Actions planifiées : une qui lance govulncheck, l’autre qui exécute la suite de tests contre la dernière version des dépendances. Deux workflows, zéro bruit.
Et pour les autres langages ?
La communauté dev reste partagée. Certains soulignent que Dependabot gère aussi les mises à jour de version (pas seulement la sécurité) et que govulncheck ne couvre que Go. Pour les projets JavaScript, Python ou Rust, le problème reste entier.
Mais le constat de fond tient la route, comme l’ont relayé The Register et Bleeping Computer. Les outils de sécurité automatisés qui génèrent du bruit sans contexte peuvent devenir contre-productifs. Et quand c’est l’auteur même du correctif qui dit « ces alertes sont absurdes », ça force à réfléchir.
Valsorda a désactivé Dependabot sur ses propres dépôts. Le message est clair : un bon scanner de vulnérabilités devrait comprendre votre code, pas juste lire un fichier de dépendances.