Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
March 27, 2022 02:52 pm GMT

Garder le Dependabot sous contrle

Le Dependabot est un bot intgr GitHub qui scanne les dpendances d'un dpt afin de dtecter celles qui ont t signales comme vulnrables. Lorsque c'est le cas, il cre une alerte visible dans l'onglet "Security / Dependabot alerts" sur GitHub et soumet une pull request avec un correctif qui met jour la version figurant dans le manifest (par exemple le fichier package-lock.json et / ou package.json).

Le bot est assez malin pour proposer une monte de version qui soit la moins loigne possible de l'actuelle en respectant les conditions fixes par le manifest. Parfois il n'y arrive pas, pour diverses raisons mais dans ce cas l'alerte est accompagne d'un message assez clair sur la marche suivre.

Le Dependabot, ce voisin bruyant

Le problme du Dependabot c'est que par dfaut, il peut tre assez bruyant. Le fait est que l'arbre de dpendances d'un projet JavaScript moyen est trs... riche (les packages JavaScript ont tendance suivre le principe du "fais une chose mais fais le bien"). Quand on additionne les dpendances du projet avec ses sous dpendances, ses sous-sous dpendances, et etc. on multiplie les chances d'tre touch par une vulnrabilit.

En revanche ces vulnrabilits ne sont pas toujours exploitables dans le contexte du projet. Par exemple la dpendance vulnrable n'est peut-tre utilis qu'au moment de build l'application. Ce qui se fait en gnral dans un environnement isol o le code vulnrable n'est pas accessible par un attaquant potentiel. Ou alors la vulnrabilit fait partie du code publi mais les conditions de son exploitation ne sont pas runies. Par exemple elle concerne une partie d'une librairie qui est inutilise.

Recevoir de nombreuses alertes non pertinentes en continue peut distraire une quipe et lui faire baisser sa garde. Si on s'habitue au bruit et qu'on l'ignore, il devient facile de passer ct d'une vraie alerte. C'est l le vrai danger du bruit et c'est pour cette raison qu'il faut tout faire pour le rduire et le rendre pertinent.

Configurer le Dependabot pour le rendre pertinent

Un bon moyen de limiter les alertes au code sensible du projet c'est d'indiquer au Dependabot de ne s'intresser qu'aux dpendances de "production". C'est dire les dpendances dont le code est exploitable par un attaquant potentiel. Pour un projet JavaScript, il s'agit des dpendances listes dans le champ dependencies du manifest package.json. l'inverse, le champ devDependencies lui liste les dpendances qui ne sont utilises que dans un environnement de dveloppement. Pour a, il suffit de crer le fichier .github/dependabot.yml avec la configuration suivante :

version: 2updates:  - package-ecosystem: "npm"    directory: "/"    schedule:      interval: "daily"    allow:      - dependency-type: "production"

Mais attention, si vous vous arrtez l vous allez rveiller la partie en sommeil du Dependabot qui va se mettre vous proposer de mettre jour toutes vos dpendances. En effet, si le Dependabot est activ par dfaut sur les dpts publics pour les mises jour de scurit, l'ajout de ce fichier de configuration activera galement les montes de version. Le bot se mettra alors proposer de mettre jour les dpendances vers des versions plus rcentes. Si votre intention tait de rduire le bruit, il y a des chances que ce comportement ne soit pas le bienvenue. Pour dsactiver cette partie du Dependabot et affecter les mises jour de scurit quand mme, il vous faudra la configuration suivante :

version: 2updates:  - package-ecosystem: "npm"    directory: "/"    schedule:      interval: "daily"    open-pull-requests-limit: 0    allow:      - dependency-type: "production"

L'astuce consiste mettre une limite de 0 au nombre de pull requests que le Dependabot peut ouvrir. Ce paramtre est l'un de ceux qui n'a pas d'influence sur les mises jour de scurit. L'autre paramtre incompatible est target-branch qui permet de spcifier la branche cible pour les pull requests. Si il pourrait tre tentant de faire passer la mise jour par une tape de recette en mergeant sur une branche du type develop, ce n'est pas possible. Et c'est mme pire que a puisque la documentation indique que si ce paramtre est prsent, les mises jour de scurit ignoreront compltement la configuration :

When you use this option, the settings for this package manager will no longer affect any pull requests raised for security updates.

On peut comprendre la motivation, a n'a pas de sens de mettre une limite sur le nombre d'alertes. Et quand une vulnrabilit est signale, c'est dj trop tard. Elle est dans la nature depuis un certain temps et des attaquants l'exploitent peut-tre dj. Il faut donc proposer un correctif le plus vite possible en production. Mais c'est garder l'esprit si vous souhaitez configurer les deux aspects du Dependabot.

Enfin, si cette approche est un bon moyen de rduire les chances de passer ct d'un vrai risque, il ne faut pas s'arrter l. Ce n'est pas parce que le code vulnrable n'est utilis qu'en dveloppement que ce n'est pas un risque. Si il s'excute sur la machine d'un dveloppeur, il pourrait lui voler sa cl ssh, lire les variables d'environnement, ou encore envoyer des fichiers. Des attaques qui peuvent finir par avoir un impact sur le projet ou l'quipe.

Au del du Dependabot

Il ne faut donc pas tomber dans le pige de tout ignorer et rejeter. La prsence de bruit dans les processus d'une quipe peut tre le symptme d'un problme plus grand. Peut-tre que l'quipe manque de temps pour les tches de maintenance parce qu'elles ne font pas partie intgrante de leur routine. Dans ce cas il serait intressant de les considrer comme les autres tches, en les ajoutant au sprint.

Enfin, il existe des alternatives ou complments au Dependabot comme Snyk ou Socket. Ces services proposent souvent plus d'options de configuration et des interfaces qui donnent un plus grand contrle. C'est un bon moyen de se simplifier la vie tout en prenant le sujet au srieux.


Original Link: https://dev.to/zhouzi/garder-le-dependabot-sous-controle-3h7n

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To