Optimiser la priorisation grâce à un contexte approfondi au niveau de l’application
Michael Komraz
28 juillet 2020
0 minutes de lectureLa priorisation des correctifs de vulnérabilités devient de plus en plus difficile, à la fois en raison de l’augmentation constante du nombre de vulnérabilités et de la complexité de l’évaluation du risque qu’elles présentent. Les vulnérabilités ne se valent pas toutes, et leur niveau de risque varie en fonction d’un ensemble de facteurs objectifs et subjectifs. Une priorisation efficace repose sur une évaluation précise de ces facteurs.
CVSS est couramment utilisé pour relever ce défi, mais présente certaines limites inhérentes. Certes, CVSS v3 complète le score de base et peut inclure des métriques temporelles et environnementales. Mais il ne tient toujours pas compte du contexte de l’application : CVSS ne prend pas en considération les différentes interdépendances et interactions propres à l’application, aux bibliothèques open source et aux fonctions qu’elle appelle.
C’est là qu’intervient Reachable Vulnerabilities de Snyk.
Pourquoi la « joignabilité » est importante
La plupart des solutions analysent votre application pour déterminer quelles dépendances open source y sont intégrées. Cette liste est ensuite comparée à une base de données de vulnérabilités afin de produire un rapport sur les dépendances vulnérables.
Mais la présence d’une vulnérabilité dans une partie de votre code ne signifie pas nécessairement que toute la bibliothèque est vulnérable. Dans bien des cas, les développeurs n’utilisent qu’une petite partie d’une bibliothèque ou d’un package. Il y a donc de fortes chances que la fonction vulnérable ne soit pas « atteinte » dans le chemin d’exécution de l’application. En général, les vulnérabilités qui ne sont pas atteintes ne compromettent pas l’application dans son ensemble et présentent donc moins de risques que celles qui le sont.

Reachable Vulnerabilities de Snyk analyse en profondeur le flux de code de l’application pour déterminer si celle-ci « atteint » une fonction vulnérable. Les résultats de cette analyse peuvent ensuite servir à établir les priorités plus efficacement.
Reachable Vulnerabilities en chiffres
Nous améliorons constamment les algorithmes et les heuristiques qui alimentent Reachable Vulnerabilities, mais pouvons affirmer avec confiance que le contexte apporté par Reachable Vulnerabilities réduit considérablement le nombre de vulnérabilités nécessitant une attention urgente. Sur les 300 projets Java Maven que nous avons testés, seules 2 % des vulnérabilités détectées étaient réellement atteignables par l’application. 20 % supplémentaires étaient potentiellement atteignables.
Cela ne signifie pas que les 78 % de vulnérabilités restantes sont toutes des faux positifs. Au contraire, elles doivent elles aussi être triées et évaluées à l’aide du Priority Score de Snyk et d’autres fonctionnalités de priorisation. Toutefois, le contexte fourni par Reachable Vulnerabilities vous aide à repérer rapidement les vulnérabilités à traiter en premier.
Comment cela fonctionne-t-il ?
Pour déterminer si une vulnérabilité est atteignable, nous utilisons différents algorithmes afin d’établir un graphe d’appels pour le code propriétaire de l’application et ses dépendances open source. Ce graphe représente tous les chemins d’exécution de l’application et nous fournit les informations nécessaires pour savoir s’ils atteignent effectivement la partie vulnérable de la dépendance.
Les différentes dépendances et fonctions représentées dans le graphe d’appels sont mises en correspondance avec la base de données des vulnérabilités Snyk Intel, la base de données de vulnérabilités la plus complète, précise et à jour du marché. Enrichie de données sélectionnées manuellement et exploitables sur les dépendances et leurs fonctions vulnérables, elle garantit la précision des résultats de l’analyse effectuée par Reachable Vulnerabilities.
L’expertise de Snyk en matière de sécurité entre en jeu lorsque la génération d’un graphe d’appels ne suffit pas à déterminer précisément la joignabilité. Dans certaines applications, par exemple, l’arbre des dépendances utilisé à l’exécution est affecté par des facteurs externes. Dans d’autres, des vulnérabilités jugées atteignables sont en réalité inoffensives, tandis que certaines doivent être prioritaires comme si elles étaient atteignables, quel que soit le graphe d’appels. Reachable Vulnerabilities applique des techniques heuristiques et une logique d’analyse supplémentaires pour garantir des résultats précis.
Tester vos projets avec Reachable Vulnerabilities
Les projets sont testés avec Reachable Vulnerabilities à l’aide de l’interface de ligne de commande Snyk. Il suffit d’ajouter le paramètre --reachable-vulns à la commande snyk test (remarque : les projets doivent être compilés avant le lancement du test) :
snyk test --reachable-vulns
Snyk lance l’analyse. En arrière-plan, Snyk génère le graphe d’appels de l’application et le met en correspondance avec les données de vulnérabilité de Snyk.
Une fois le test terminé, les résultats s’affichent dans l’interface de ligne de commande. Ils indiquent le nombre de dépendances testées, le nombre de vulnérabilités détectées et combien d’entre elles sont jugées atteignables. Un niveau de joignabilité s’affiche à côté de chaque vulnérabilité, et le chemin entre le code de l’application et la fonction vulnérable apparaît en dessous.

Il existe trois niveaux de joignabilité :
Atteignable : un chemin clair entre l’application et la fonction vulnérable a été identifié. Cette vulnérabilité doit être corrigée en priorité.
Potentiellement atteignable : des éléments partiels indiquent que la fonction vulnérable pourrait être atteignable. Cette vulnérabilité doit être examinée.
Aucune information : les informations disponibles ne permettent pas de déterminer si la vulnérabilité est atteignable.
Prioriser avec Reachable Vulnerabilities
L’interface Snyk offre un moyen plus simple de prioriser les vulnérabilités à l’aide de Reachable Vulnerabilities, dans un même projet comme entre plusieurs projets. Pour utiliser Reachable Vulnerabilities dans l’interface Snyk, exécutez la commande suivante dans l’interface de ligne de commande :
snyk monitor --reachable-vulns
Sur la page Project de l’interface Snyk, des indicateurs de joignabilité sont ajoutés aux cartes des problèmes, aux côtés des autres indicateurs utilisés pour établir les priorités : la gravité et Exploit Maturity. De nouveaux filtres Reachable Vulnerabilities vous permettent également de filtrer rapidement les vulnérabilités selon leur joignabilité :

Pour vous aider à corriger rapidement les vulnérabilités atteignables, Snyk affiche également des informations détaillées sur le chemin exact emprunté par l’application pour appeler la fonction vulnérable.

Les données de joignabilité sont également disponibles sur la page Reports > Issues, afin de vous permettre de surveiller et de suivre plus facilement vos vulnérabilités au fil du temps.

Commencez dès maintenant !
Une évaluation précise et rapide des risques liés aux vulnérabilités est essentielle à une priorisation efficace. Cette précision repose à son tour sur l’accès à des informations contextuelles concernant les facteurs objectifs et subjectifs liés à une vulnérabilité. Or, ces informations sont difficiles à obtenir.
En analysant en profondeur le chemin d’exécution de l’application et en le mettant en correspondance avec la richesse des données de sécurité de Snyk, Reachable Vulnerabilities fournit le contexte détaillé au niveau de l’application nécessaire pour évaluer précisément les risques et établir les priorités en conséquence.
Reachable Vulnerabilities est disponible en version bêta pour tous les forfaits Snyk payants, à partir de Standard, et uniquement pour les projets Java (Maven). Inscrivez-vous gratuitement et essayez-le dès maintenant !
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.