Comment Snyk Code hiérarchise les vulnérabilités à l’aide de son Priority Score
Frank Fischer
9 novembre 2021
0 minutes de lectureSi toutes les vulnérabilités semblent tout aussi critiques, les ingénieurs risquent d’être submergés et de perdre du temps sur les mauvais problèmes. C’est pourquoi les outils de sécurité pour développeurs doivent proposer une fonctionnalité de hiérarchisation claire et simple. Comme vous l’avez sans doute remarqué, Snyk Code affiche un Priority Score en haut à droite du panneau de présentation. Lorsque vous le survolez, une explication indique comment le score de priorité a été calculé. Pour hiérarchiser rapidement les problèmes, vous pouvez également trier les résultats par Priority Score en haut à droite.

Mais un Priority Score est bien plus qu’un simple chiffre. Dans cet article, je souhaite vous présenter la réflexion qui sous-tend ce score et vous donner quelques conseils pratiques pour l’utiliser au mieux.
Remarque : Comme vous le verrez, nous avons fait des choix précis concernant le calcul du score. Vous auriez peut-être pris des décisions différentes, et c’est tout à fait normal ! Il n’existe pas de réponse parfaite, et vos retours constructifs nous intéressent toujours.
Les bases du Priority Score
Tout d’abord, un Priority Score est un nombre entier compris entre 1 et 1 000. Plus le nombre est élevé, plus Snyk Code vous recommande de corriger la vulnérabilité. Il est très important de noter que, même si les Priority Scores de Snyk Open Source ou de Snyk Container semblent similaires, nous vous déconseillons de comparer les scores entre produits. Comparez uniquement les scores de Snyk Code entre eux.
Le Priority Score a pour objectif de vous aider à renforcer efficacement la sécurité de votre application. Pour Snyk, cela se traduit par l’impact et la facilité d’action. La gravité d’une vulnérabilité est importante, mais il faut aller plus loin. Pour évaluer l’impact, nous cherchons à savoir si une correction peut résoudre plusieurs vulnérabilités. Si c’est le cas, le Priority Score augmente. Pour évaluer la facilité d’action, Snyk Code détermine la facilité avec laquelle une vulnérabilité peut être corrigée. Si la correction est rapide et simple, le Priority Score augmente.
Cette analyse plus approfondie nous permet de hiérarchiser les corrections de façon à optimiser le temps des équipes d’ingénierie.
Comment le Priority Score est calculé
Le Priority Score est calculé à l’aide d’une fonction mathématique qui additionne des points en fonction des caractéristiques du problème. Le score est recalculé à chaque création d’un instantané et à chaque analyse. Les Priority Scores peuvent différer, même lorsque les instantanés sont pris à quelques instants d’intervalle (nous verrons pourquoi plus loin). Snyk fournit toutes les données utilisées pour calculer le Priority Score dans un fichier JSON.
Remarque : La méthode décrite ci-dessous correspond au calcul en vigueur en septembre 2021. Nous poursuivons constamment nos recherches et nos apprentissages, et le secteur de la cybersécurité évolue rapidement. Nous pourrions donc modifier ce calcul à l’avenir. Chez Snyk, nous réévaluons en permanence la logique des Priority Scores afin de maintenir une efficacité de premier plan dans un paysage de menaces en constante évolution.
Gravité
La gravité attribuée au problème par le moteur d’analyse représente 50 % du Priority Score global. Si le moteur attribue une gravité `High`, ce paramètre vaut 500 points ; `Medium` vaut 250 points et `Low`, 100 points. Il est important de noter que le moteur utilise déjà une heuristique pour attribuer le niveau de gravité. Comme notre moteur tient compte du contexte, il prend en considération différents aspects de celui-ci. Par exemple, si le problème est détecté dans un fichier de test ou provient de celui-ci, le niveau de gravité sera ajusté.
Les 50 % restants du score proviennent de différents éléments :
Occurrences
Le nombre relatif d’occurrences de la vulnérabilité concernée se traduit en points. Par exemple, imaginons que votre programme compte 10 problèmes répartis en trois types : 5 de type A, 2 de type B et 3 de type C. Le type C obtiendrait donc 30 points. L’idée est de regrouper les problèmes par type et d’encourager les corrections qui les résolvent tous en même temps. En effet, si vous pouvez corriger une occurrence, vous pouvez toutes les corriger.
Fichiers sensibles
Les fichiers sensibles sont des fichiers associés à plusieurs problèmes. Snyk Code attribue 100 points au problème si son point de départ se trouve dans un fichier sensible, 50 points si le flux de code traverse un fichier sensible, et 0 point s’il n’y touche pas (par exemple, les fichiers que le moteur identifie comme des fichiers de test sont exclus). L’objectif est de concentrer vos efforts sur les zones sensibles de l’application afin de réduire les changements de contexte entre plusieurs fichiers. Cela tient également compte du fait que corriger un problème peut aussi résoudre des problèmes voisins.
Exemples de corrections
Si Snyk Code dispose de bons exemples de corrections apportées à un problème dans des projets open source, cela vaut 200 points. Nous procédons ainsi, car nous estimons que cela facilite considérablement la correction du problème. Les corrections précédentes vous aident à résoudre les problèmes rapidement et facilement. Et les gains rapides — soyons honnêtes — sont parfaits pour maintenir la motivation des équipes.
Souvent corrigé dans l’open source
Voici un critère intéressant. Si le moteur détecte une vulnérabilité dans plus de 1 000 dépôts de notre jeu de données d’entraînement open source, il lui attribue 100 points. Cela s’explique par plusieurs raisons :
Si la vulnérabilité est aussi répandue, le risque d’exploitation — même par des pirates débutants — augmente, ce qui la rend plus dangereuse.
Si la vulnérabilité a déjà été corrigée des centaines de fois, il existe une bonne pratique pour la résoudre, que vous pouvez appliquer.
Bonnes pratiques pour le Priority Score
Comme vous l’avez vu, le Priority Score est un outil puissant qui peut orienter vos efforts de correction. Nous vous encourageons à l’utiliser. Pour conclure, voici quelques autres bonnes pratiques pour utiliser les Priority Scores :
Dans l’interface Snyk, vous pouvez filtrer les résultats en définissant un seuil minimal et un seuil maximal pour le Priority Score.
Comme le Priority Score est recalculé à chaque analyse et dépend des modifications du code, nous vous recommandons de toujours utiliser sa valeur la plus récente. Ainsi, au lieu de lancer une analyse et de créer 10 tickets Jira pour les 10 premiers problèmes détectés, corrigez un problème, puis relancez l’analyse. Tenez compte du nouveau problème en tête du classement, qui peut avoir changé après les corrections précédentes.
Ne comparez pas les Priority Scores de différentes solutions Snyk. Ils décrivent des éléments différents et reposent sur des logiques distinctes qui ne sont pas comparables.
Survolez votre score et examinez les raisons qui ont mené à ce Priority Score. Parfois, chercher une correction facile pour commencer peut vous aider à obtenir rapidement un premier succès. La motivation est essentielle !
Lancez-vous dans les compétitions Capture The Flag
Apprenez à résoudre des défis Capture The Flag en regardant à la demande notre atelier virtuel d’initiation.



