Savez-vous si vos dépendances .NET sont sûres ?
Hayley Denbraver
3 mai 2019
0 minutes de lecturePlus tôt cette année, Snyk a ajouté la prise en charge de l’intégration aux projets .NET de votre dépôt Git et, cette semaine encore, nous avons lancé une nouveauté : la prise en charge de Microsoft Azure.
Dans cet article, nous nous intéressons aux bibliothèques qui, parce qu’elles contiennent les vulnérabilités les plus courantes aujourd’hui, apparaissent aussi le plus souvent dans les analyses de projets Snyk. Nous allons découvrir les dix bibliothèques qui affectent actuellement le plus nos utilisateurs et les examiner de plus près. Commençons par passer rapidement en revue les caractéristiques de ce top 10, puis intéressons-nous davantage à trois de ces bibliothèques, qui présentent des vulnérabilités particulièrement intéressantes. À l’aide de la Snyk Vulnerability Database et des données du registre NuGet, nous verrons comment chaque bibliothèque est utilisée, quelle est sa popularité et quelles vulnérabilités connues elle contient.
Les dix principales bibliothèques
Le tableau suivant présente ces dix principales bibliothèques :
Rang | Bibliothèque | Utilisation | Vulnérabilités* | Téléchargements cumulés |
|---|---|---|---|---|
1 | Interface de programmation pour les applications HTTP modernes | 5 de gravité élevée | 81 M | |
2 | Outil de gestion de tampon d’octets à producteur unique et consommateur unique | 1 de gravité élevée |
| |
3 | Composant central du serveur web multiplateforme Kestrel d’ASP.NET Core | 2 de gravité élevée | 22,1 M | |
4 | Protocole permettant des canaux de communication bidirectionnels et persistants via des connexions TCP | 1 de gravité moyenne | 3,6 M | |
5 | Protocole d’accès aux données pour le web | 1 de gravité élevée | 42,4 M | |
6 | Intergiciel WebSocket destiné à être utilisé avec des serveurs opaques | 1 de gravité élevée | 12,5 M | |
7 | Bibliothèque fournissant des classes pour créer et valider des signatures numériques XML | 1 de gravité élevée | 13,6 M | |
8 | Abstractions de transport pour le serveur web multiplateforme Kestrel d’ASP.NET Core | 1 de gravité élevée | 22,1 M | |
9 | Bibliothèque permettant des communications réseau sécurisées entre les points de terminaison client et serveur | 3 de gravité élevée | 42,6 M | |
10 | Système d’adhésion pour créer des applications web ASP.NET Core | 1 de gravité élevée | 18,3 M |
*Cumul pour toutes les versions
Quelques éléments ressortent à la lecture de ce tableau.
Tout d’abord, le serveur web multiplateforme ASP.NET Core Kestrel est très populaire, mais présente actuellement plusieurs vulnérabilités de gravité élevée 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 gravité est généralement élevée.
Enfin, il est intéressant de noter que, même si toutes ces bibliothèques semblent largement utilisées, le nombre total de téléchargements d’une bibliothèque n’est pas directement lié à son classement dans notre liste. La bibliothèque system.net.http compte à la fois le plus grand nombre de téléchargements cumulés et l’impact le plus important sur nos utilisateurs. Toutefois, pour les bibliothèques classées de la deuxième à la dixième place, il n’y a pas de corrélation directe similaire.
Examinons maintenant les trois bibliothèques qui ont eu le plus grand impact sur nos utilisateurs.
System.Net.Http
Commençons par la bibliothèque system.net.http, qui est à l’origine des vulnérabilités que nous observons le plus souvent dans nos analyses.
À quoi sert cette bibliothèque ?
System.net.http est une bibliothèque qui fournit une interface de programmation pour les applications HTTP modernes. Elle comprend des composants client HTTP permettant aux applications d’utiliser des services web via HTTP, ainsi que des composants HTTP que les clients et les serveurs peuvent utiliser pour analyser les en-têtes HTTP.
Quelle est la popularité de cette bibliothèque ?
System.net.http totalise environ 81 millions de téléchargements. La version actuelle (4.3.4), qui avait 7 mois au moment de la rédaction, représente environ 3,4 millions de téléchargements. System.http.net affiche une moyenne d’environ 31 000 téléchargements par jour.
Que savons-nous des vulnérabilités de cette bibliothèque ?
Il y a de bonnes et de mauvaises nouvelles concernant les vulnérabilités de system.net.http.
Commençons par la bonne nouvelle. 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 dernière version !
Passons maintenant à la mauvaise nouvelle. Cette bibliothèque présente plusieurs vulnérabilités de gravité élevée dans ses autres versions. L’une d’elles ne concerne que des versions très anciennes, mais quatre vulnérabilités de gravité élevée et une de gravité moyenne affectent les versions antérieures à la 4.1.2 ainsi que les versions 4.3.X antérieures à la 4.3.4.
Ces vulnérabilités sont de plusieurs 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 la fréquence des téléchargements, ainsi que des informations détaillées sur les six dernières semaines.
Malheureusement, ces statistiques montrent que seulement 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 totalement exempte de vulnérabilités connues. Autrement dit, aujourd’hui, la majorité des personnes qui téléchargent cette bibliothèque choisissent des versions comportant plusieurs vulnérabilités connues de gravité élevée.
Les chiffres de NuGet apportent toutefois une lueur d’espoir. La dernière version (4.3.4) est disponible depuis 7 mois, mais son adoption semble s’accélérer récemment. La version 4.3.4 a été téléchargée environ 3,3 millions de fois, dont 1,2 million au cours des six dernières semaines.
La recommandation de Snyk ? Si vous utilisez cette bibliothèque, passez à la version actuelle (4.3.4).
System.IO.Pipelines
Examinons maintenant la deuxième bibliothèque de notre liste, system.io.pipelines. Cette bibliothèque est relativement récente : elle date de fin 2017. Dans notre top 10, elle occupe l’avant-dernière place en nombre de téléchargements cumulés, ce qui n’a rien d’étonnant compte tenu de sa sortie récente.
À quoi sert cette bibliothèque ?
La bibliothèque system.io.pipelines est un outil de gestion de tampon d’octets à producteur unique et consommateur unique. En bref, elle facilite les opérations d’E/S (entrée/sortie) hautes performances en .NET.
Quelle est la popularité de cette bibliothèque ?
System.io.pipelines a été téléchargée environ 8,4 millions de fois, dont quelque 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.
Que savons-nous des vulnérabilités de cette bibliothèque ?
À 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 de bonnes et de mauvaises nouvelles concernant cette vulnérabilité dans system.io.pipelines.
Commençons par la mauvaise nouvelle. La seule vulnérabilité de gravité élevée 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, faire grimper vos coûts de serveur et vous causer bien des soucis.
Passons à la bonne nouvelle. La seule vulnérabilité de gravité élevée associée à cette bibliothèque est une vulnérabilité de déni de service. Oui, c’est aussi une bonne nouvelle ! Contrairement à d’autres vulnérabilités, les attaques par déni de service (DoS) ne visent généralement pas à compromettre la sécurité. Malgré les problèmes qu’une telle vulnérabilité peut entraîner, il est rassurant de savoir que, même si elle risque de nuire à la disponibilité de votre service, elle ne devrait pas entraîner de perte de données ou d’informations personnelles.
La recommandation de Snyk ? Mettez system.io.pipelines à niveau vers 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
Enfin, examinons la troisième bibliothèque de notre liste : microsoft.aspnetcore.server.kestrel.core.
À quoi sert cette bibliothèque ?
La bibliothèque microsoft.aspnetcore.server.kestrel.core est le composant central du serveur web multiplateforme ASP.NET Core Kestrel. Kestrel est un serveur piloté par les événements, fondé sur des E/S asynchrones, et généralement considéré comme le serveur web de prédilection pour les nouvelles applications ASP.NET. Le serveur web Kestrel ne possède pas toutes les fonctionnalités nécessaires à un serveur web autonome, mais il est très rapide pour les E/S asynchrones et peut fonctionner avec IIS ou NGINX.
Quelle est la popularité de cette bibliothèque ?
Microsoft.aspnetcore.server.kestrel.core revendique plus de 22 millions de téléchargements cumulés. Environ 630 000 d’entre eux concernent la version la plus récente (2.2.0), publiée fin 2018.
Que savons-nous des vulnérabilités de cette bibliothèque ?
Cette bibliothèque présente actuellement quatre vulnérabilités connues, dont 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.aspnet.core.server.kestrel.transport.abstractions) figure elle aussi dans la liste. Si vous utilisez microsoft.aspnetcore.server.kestrel.core, vous utilisez probablement également microsoft.aspnet.core.server.kestrel.transport.abstractions. 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 manière autonome ou derrière une bibliothèque comme NGINX ou IIS aura une incidence sur votre approche de la sécurité.
Conclusion
Nous espérons que cet examen approfondi des bibliothèques .NET que nos analyses identifient comme étant à l’origine du plus grand nombre de vulnérabilités dans les projets de nos utilisateurs vous a intéressé. D’autres contenus sur .NET arrivent bientôt, alors que nous célébrons notre récent partenariat avec Azure. Vous utilisez l’une de ces bibliothèques ? Vous souhaitez sécuriser vos projets .NET ? Essayez Snyk gratuitement dès aujourd’hui.
Lancez-vous dans les compétitions Capture The Flag
Apprenez à résoudre des défis de capture du drapeau en regardant à la demande notre atelier virtuel d’initiation.
