Skip to main content

Spécificité de l’écosystème .NET : 75 % des vingt principales vulnérabilités sont considérées comme graves

Écrit par
Headshot of Hayley Denbraver

Hayley Denbraver

25 juillet 2019

0 minutes de lecture

Découvrez notre nouveau rapport sur la sécurité de l’open source dans l’écosystème .NET. Il se compose de trois articles :

Notre rapport PDF, réalisé avec soin, rassemble toutes ces informations et bien plus encore. Vous pouvez le télécharger gratuitement.

Introduction

Dans la première partie de ce rapport, nous avons découvert l’écosystème .NET et décrit à quoi ressemble un projet type en termes de dépendances directes et indirectes. Dans cette partie, nous allons examiner les vingt vulnérabilités connues les plus souvent détectées lors des analyses de projets Snyk. Nous allons également nous intéresser aux bibliothèques associées à ces vulnérabilités. Pour en savoir plus sur les types et les niveaux de gravité des vulnérabilités connues dans l’écosystème, consultez la dernière section du rapport.

Les vulnérabilités les plus courantes dans les projets .NET

Intéressons-nous maintenant aux dix bibliothèques qui ont actuellement le plus d’impact sur nos utilisateurs, car elles apparaissent le plus souvent dans les analyses de projets Snyk. Commençons par examiner les caractéristiques des dix premières, puis penchons-nous de plus près sur trois d’entre elles, qui présentent des vulnérabilités particulièrement intéressantes. Le tableau indique les versions minimales vers lesquelles effectuer la mise à niveau pour éliminer les vulnérabilités.

Tableau classant 10 bibliothèques associées à des vulnérabilités courantes, avec leurs usages, le nombre de vulnérabilités, les versions sûres et le nombre total de téléchargements.

Quelques éléments ressortent de ce tableau. Tout d’abord, le serveur web multiplateforme ASP.NET Core Kestrel est très populaire et a connu plusieurs vulnérabilités graves provenant de différentes bibliothèques associées.

Ensuite, le nombre total de vulnérabilités de ces bibliothèques est généralement faible, mais leur niveau de gravité est souvent élevé. À l’aide de la Snyk Vulnerability Database et des données du registre NuGet, examinons de plus près les trois principales bibliothèques pour découvrir leur utilisation, leur popularité et les vulnérabilités connues qu’elles présentent.

system.net.http

system.net.http fournit une interface de programmation pour les applications HTTP modernes. Elle comprend des composants client HTTP qui permettent aux applications de consommer des services web via HTTP, ainsi que des composants HTTP utilisables par les clients et les serveurs pour analyser les en-têtes HTTP.

Tableau intitulé « Répartition des vulnérabilités de system.net.http » présentant six vulnérabilités, leur niveau de gravité, leur score CVSS et la disponibilité d’une mise à niveau.

Popularité

system.net.http totalise environ 81 millions de téléchargements depuis sa création. La version actuelle (4.3.4) représente environ 3,4 millions de téléchargements. System.http.net enregistre en moyenne environ 31 000 téléchargements par jour.

Vulnérabilités

Concernant les vulnérabilités de system.net.http, il y a une bonne et une mauvaise nouvelle. Commençons par la bonne : la version la plus récente de cette bibliothèque (4.3.4) ne présente aucune vulnérabilité connue. Si vous utilisez cette bibliothèque, passez à la version la plus récente !

Passons maintenant à la mauvaise nouvelle. Cette bibliothèque présente plusieurs vulnérabilités graves dans ses autres versions. L’une de ces vulnérabilités ne concerne que des versions très anciennes, mais les versions antérieures à 4.1.2 ainsi que les versions 4.3 à 4.3.2 incluses présentent quatre vulnérabilités graves et une de gravité moyenne.

Ces vulnérabilités sont de différents types : divulgation d’informations, validation incorrecte de certificats, élévation de privilèges, contournement de l’authentification et déni de service. NuGet fournit des statistiques intéressantes sur cette bibliothèque, notamment les versions téléchargées et leur fréquence, ainsi que des informations détaillées sur les six dernières semaines.

Malheureusement, ces statistiques montrent que seuls 16 % des téléchargements de cette bibliothèque au cours des six dernières semaines concernaient la version la plus récente, la seule entièrement exempte de vulnérabilités connues. Autrement dit, pendant cette période, 84 % des téléchargements de packages concernaient des versions présentant plusieurs vulnérabilités connues et graves.

Diagramme en anneau intitulé « Téléchargements du package vulnérable system.net.http » indiquant 84 % de téléchargements vulnérables et 16 % de téléchargements non vulnérables.

Les chiffres de NuGet donnent toutefois une lueur d’espoir. La version la plus récente (4.3.4) est disponible depuis sept mois, mais son adoption semble s’accélérer ces derniers temps. Elle a été téléchargée environ 3,3 millions de fois, dont 1,2 million au cours des six dernières semaines.

system.io.pipelines

La bibliothèque system.io.pipelines est un outil de gestion de tampons d’octets destiné à un producteur unique et à un consommateur unique. En bref, elle facilite les opérations d’E/S (entrée/sortie) hautes performances dans .NET.

Tableau présentant une vulnérabilité de déni de service dans system.io.pipelines, classée comme étant de gravité élevée, avec un score CVSS de 7,5 et une mise à niveau disponible.

Popularité

system.io.pipelines a été téléchargée environ 8,4 millions de fois, dont près de 600 000 téléchargements pour la version la plus récente (4.5.3). La version 4.6.0 est actuellement en préversion.

Vulnérabilités

À l’heure actuelle, une seule vulnérabilité connue est associée à la bibliothèque system.io.pipelines. Comme pour la bibliothèque system.net.http évoquée précédemment, il y a une bonne et une mauvaise nouvelle concernant la vulnérabilité de system.io.pipelines.

Commençons par la mauvaise nouvelle. La seule vulnérabilité grave associée à cette bibliothèque est une vulnérabilité de déni de service, susceptible de faire planter votre site web. Elle présente un score de gravité élevé et, si elle est exploitée, peut empêcher les utilisateurs légitimes d’accéder à votre site web, faire grimper les coûts de votre serveur et vous causer bien des soucis.

Passons à la bonne nouvelle. La seule vulnérabilité grave associée à cette bibliothèque est une vulnérabilité de déni de service.

Eh oui, c’est aussi une bonne nouvelle. Contrairement à d’autres vulnérabilités, les attaques par déni de service ne visent généralement pas à compromettre la sécurité. Malgré les désagréments qu’une telle vulnérabilité peut entraîner, il est rassurant de savoir qu’elle risque de nuire à votre disponibilité, mais peu probablement d’entraîner la perte de données ou d’informations personnelles.

Notre recommandation ? Passez system.io.pipelines à la version 4.5.1 ou ultérieure et surveillez l’état de sécurité de cette bibliothèque récente et utile !

microsoft.aspnetcore.server.kestrel.core

La bibliothèque microsoft.aspnetcore.server.kestrel.core est le composant central du serveur web multiplateforme ASP.NET Core Kestrel. Kestrel est un serveur événementiel reposant sur des E/S asynchrones. Il est généralement considéré comme le serveur web de prédilection pour les nouvelles applications ASP.NET.

Tableau présentant quatre vulnérabilités de microsoft.aspnetcore.server.kestrel.core : déni de service et élévation de privilèges, avec leur gravité, leurs scores CVSS et les mises à niveau

Popularité

microsoft.aspnetcore.server.kestrel.core revendique plus de 22 millions de téléchargements depuis sa création. Environ 630 000 d’entre eux concernent la version la plus récente (2.2.0), publiée fin 2018.

Vulnérabilités

Cette bibliothèque présente actuellement quatre vulnérabilités connues : deux vulnérabilités de déni de service de gravité moyenne, ainsi qu’une vulnérabilité de déni de service et une élévation de privilèges de gravité élevée. La bonne nouvelle, c’est que les deux versions les plus récentes (2.1.7 et 2.2.0) ne présentent aucune vulnérabilité connue.

La mauvaise nouvelle, c’est qu’une bibliothèque associée (microsoft.aspnetcore.server.kestrel.transport.abstractions) figure également parmi celles liées aux vulnérabilités les plus courantes. Si vous utilisez microsoft.aspnetcore.server.kestrel.core, il est également probable que vous utilisiez d’autres bibliothèques présentant des vulnérabilités courantes.

N’oubliez pas non plus que Kestrel n’est pas un serveur web complet et qu’il est souvent exécuté derrière une autre bibliothèque. Le choix d’exécuter Kestrel de façon autonome ou derrière une bibliothèque telle que NGINX ou IIS aura une incidence sur votre approche de la sécurité.

Les autres bibliothèques parmi les 20 plus populaires qui présentent les vulnérabilités les plus courantes sont décrites dans le tableau suivant.

Tableau intitulé « D’autres vulnérabilités fréquemment observées », répertoriant les packages, les types de vulnérabilités, leur gravité, leurs scores CVSS et la disponibilité des mises à niveau.

Examinons maintenant les types et les niveaux de gravité des vulnérabilités, ainsi que leurs mesures correctives.

Les types de vulnérabilités .NET les plus courants

Parmi les vulnérabilités les plus courantes, on trouve différents types. Toutefois, plus de la moitié des vulnérabilités figurant dans les dix premières sont des vulnérabilités de déni de service. Le déni de service (DoS) désigne une famille d’attaques visant à rendre un système inaccessible à ses utilisateurs légitimes.

Toutefois, plus de la moitié des vulnérabilités figurant dans les dix premières sont des vulnérabilités de déni de service.

Diagramme en barres des types de vulnérabilité les plus fréquents : DoS, 8 de gravité élevée et 4 moyenne ; élévation de privilèges, 3 de gravité élevée ; quatre autres types, 1 chacun.

Cela a des implications intéressantes en matière de sécurité, car contrairement à d’autres vulnérabilités, les attaques DoS ne visent généralement pas à compromettre la sécurité. Elles cherchent plutôt à rendre les sites web et les services inaccessibles aux utilisateurs légitimes, ce qui entraîne une interruption de service.

Une attaque par déni de service très répandue est l’attaque DDoS (déni de service distribué), qui tente de saturer les canaux réseau d’un système en générant un volume important de trafic à partir de nombreuses machines. Dans le cas des bibliothèques open source, les vulnérabilités DoS permettent aux attaquants de provoquer un plantage ou de paralyser le service en exploitant une faille du code de l’application ou d’une bibliothèque open source utilisée.

Voici deux types courants de vulnérabilités DoS :

  • Consommation excessive de processeur ou de mémoire : un attaquant envoie des requêtes conçues pour que le système mette un temps disproportionné à les traiter.

  • Plantage : un attaquant envoie des requêtes conçues pour faire planter le système.

Personne ne souhaite subir une coûteuse attaque par déni de service, avec la mauvaise publicité, les interruptions et les pertes de revenus qui peuvent en découler. Toutefois, une faille de sécurité exposant des informations sensibles pourrait avoir des conséquences bien plus graves.

Gravité des vulnérabilités

La mauvaise nouvelle que révèlent ces données, c’est que les trois quarts des vulnérabilités les plus courantes présentent un niveau de gravité élevé. Les vulnérabilités de gravité moyenne représentent le quart restant des vingt principales vulnérabilités. Aucune vulnérabilité de faible gravité n’a été relevée. Les scores CVSS vont de 5,3 à 8,8, avec une médiane de 7,5.

Diagramme en anneau présentant les vulnérabilités les plus fréquentes par niveau de gravité : 75 % élevées, 25 % moyennes et 0 % faibles.

75 % des vulnérabilités les plus courantes présentent un niveau de gravité élevé.

Nous avons constaté une tendance générale dans l’écosystème .NET : les projets avaient tendance à présenter peu de vulnérabilités. Cela peut laisser penser qu’il est possible de reléguer la sécurité au second plan, mais les statistiques sur les niveaux de gravité montrent que ce raisonnement est erroné. Les vulnérabilités connues sont peut-être moins fréquentes dans l’écosystème .NET, mais celles qui existent peuvent causer de graves perturbations et dommages si elles ne sont pas corrigées.

Toutes les vulnérabilités peuvent être corrigées

Les vingt principales vulnérabilités recensées par Snyk disposent toutes d’une mesure corrective.

La plupart des vulnérabilités figurant parmi les vingt principales présentent un niveau de gravité élevé, mais il y a aussi une bonne nouvelle : elles disposent toutes d’une mesure corrective. C’est une excellente nouvelle. Il est utile de connaître l’existence d’une vulnérabilité, même lorsqu’aucune correction n’est disponible, mais rien ne vaut des conseils concrets pour renforcer la sécurité d’un projet.

Vous souhaitez en savoir plus ?

Vous souhaitez avoir une vue d’ensemble des vulnérabilités connues dans l’écosystème ? Retrouvez la dernière partie de notre rapport ici.

Et bien sûr, vous pouvez télécharger gratuitement le rapport complet.