Une application moderne est faite en grande partie de paquets écrits par d'autres. Chacun est du code que nous livrons : une vulnérabilité connue dans une dépendance est donc une vulnérabilité dans notre produit, même si nous n'en avons pas écrit une ligne.
GitHub Dependabot analyse le graphe de dépendances complet de nos dépôts et déclenche une alerte dans deux cas : lorsqu'une nouvelle vulnérabilité est publiée dans la GitHub Advisory Database, ou lorsque notre graphe de dépendances change — par exemple quand un commit met à jour un paquet ou sa version. Seuls les avis revus par GitHub déclenchent une alerte.
Lorsqu'un correctif existe, Dependabot ne s'arrête pas à l'alerte. Il ouvre automatiquement une pull request qui met à jour la dépendance vers la version minimale incluant le correctif, et relie cette pull request à l'alerte. Cette pull request passe par exactement la même revue et les mêmes contrôles CI que tout autre changement — il n'existe pas de voie spéciale, moins scrutée, pour les correctifs de sécurité.
Dependabot signe ses propres commits par défaut : chaque mise à jour automatisée porte donc une paternité vérifiée, au même titre qu'un commit signé par un contributeur humain.
Ce que cela ne signifie pas
Dependabot détecte les vulnérabilités connues des dépendances — celles qui ont été divulguées publiquement et revues dans la GitHub Advisory Database. Il ne revoit pas le code que nous écrivons nous-mêmes, et ne peut pas trouver une faille que personne n'a encore signalée. La découverte et la publication de nouvelles vulnérabilités prennent aussi du temps : il existe donc toujours une fenêtre entre l'existence d'une faille et sa couverture par un avis. Nous considérons Dependabot comme une couche, pas comme un verdict sur notre posture de sécurité globale.