Surveillance des CVE
Un paquet vulnérable est installé. Quelque chose ici l'appelle-t-il ?
Tous les scanners répondent à la première moitié. La seconde est celle qui décide si l'après-midi de quelqu'un mérite d'être consacré, et une liste de paquets installés ne peut pas y répondre. SourceAnt détient déjà un graphe de ce qui importe et appelle quoi, donc il le peut.
Deux réponses, et une seule d'entre elles est urgente
Chaque avis qui correspond à quelque chose que vous installez reçoit l'une de ces réponses, avec la raison.
reached Quelque chose que vous avez écrit importe ou appelle ce paquet. L'avis concerne du code que vous exécutez réellement.
Les fichiers qui le nomment reviennent avec le verdict, pour que vous puissiez aller voir plutôt que nous croire sur parole.
installed Il est déclaré, et rien dans ce dépôt ne le nomme. Cela vaut encore la peine d'être corrigé un jour. Pas la peine de réveiller qui que ce soit.
Maintenu sur la liste plutôt que masqué, car un scanner qui écarte discrètement des choses est un scanner auquel personne ne fait confiance deux fois.
Dependabot vous dit que le paquet est là. Il ne vous dit pas si quelque chose dans votre code l'atteint, et c'est la question que se pose réellement l'ingénieur d'astreinte.
Comment il le sait
Le graphe de code était déjà là
SourceAnt indexe ce qui importe et appelle quoi. Demander à cet index si quelque chose nomme un paquet transforme une liste de tout ce qui est installé en la liste plus courte de ce qui est réellement connecté.
Ce n'est pas un scanner séparé greffé par-dessus. C'est une question de plus posée à un graphe construit pour d'autres raisons, et c'est pourquoi la réponse arrive avec les fichiers derrière elle plutôt qu'avec un score.
Où il signale trop
Un paquet dont le nom est aussi un mot courant correspondra à des choses qui n'ont rien à voir avec lui. C'est pourquoi le verdict ne voyage jamais seul. Les fichiers qui l'ont produit l'accompagnent, si bien qu'une réponse erronée vous prend dix secondes à réfuter plutôt qu'un après-midi à contester.
Le fichier de verrouillage, pas le manifeste
Un manifeste dit ce qui a été demandé. Un fichier de verrouillage dit ce qui est installé. Un avis concerne le second, donc le fichier de verrouillage l'emporte partout où les deux existent.
| Écosystème | Lu en premier | Repli sur |
|---|---|---|
| npm | package-lock.json | package.json |
| PyPI | poetry.lock | requirements.txt, puis pyproject.toml |
Un manifeste qui ne peut être analysé vous coûte un écosystème dans la réponse, pas toute la lecture. Les plages de versions sont comparées de façon volontairement prudente, car un oui erroné est une alerte que quelqu'un doit réfuter.
Ce qui est renvoyé pour chaque avis
De quoi agir sans ouvrir un autre onglet, et de quoi contester sans devoir croire quiconque sur parole.
- gravité et résumé
- Tels que la base d'avis les énonce, et non tels que nous les reformulons.
- version installée
- Lue depuis votre fichier de verrouillage, donc ce qui est réellement installé plutôt que ce qui a été demandé.
- plage affectée
- La plage indiquée par l'avis, afin que vous puissiez vérifier vous-même la correspondance.
- première version corrigée
- Où aller, lorsqu'il y a quelque part où aller.
- déclaré dans
- Le fichier qui l'a amené.
- direct ou transitif
- Quelque chose que vous avez choisi, ou quelque chose que vos choix ont entraîné. Seul l'un des deux est à vous de changer.
Fraîcheur
Périme selon un horaire, car ce n'est pas votre dépôt qui a bougé
L'essentiel de ce que SourceAnt conserve cesse d'être vrai lorsque votre code change : ces données sont donc périmées par rapport au code. Une lecture d'avis ne fonctionne pas ainsi. Elle cesse d'être vraie lorsque la base d'avis change, ce qui se produit en continu pendant que votre dépôt reste parfaitement immobile.
Une lecture est donc conservée pendant un nombre d'heures défini plutôt que jusqu'au prochain commit, et ce délai vous appartient si vous subissez plus de pression que la plupart.
Deux moitiés d'une même question
L'une demande si le code que vous installez est sûr. L'autre demande si le code que vous installez est bien le vôtre.
Cette page
Un paquet que vous avez installé fait l'objet d'un avis publié, et votre code l'atteint.
Nommage de la chaîne d'approvisionnement
Un paquet que vous croyiez le vôtre porte un nom que n'importe qui pourrait publier, et votre build pourrait prendre le leur.
Inscrivez votre système au registre
Exécutez le cœur open source sur votre propre infrastructure, ou commencez sur l'espace de travail hébergé. Le graphe est portable dans les deux cas.