Aller au contenu

.NET : Plateforme de développement de Microsoft (nom commercial, pas un sigle)

Infrastructure

.NET : nom commercial, et non sigle, de la plateforme de développement logiciel de Microsoft, qui regroupe un environnement d'exécution, des bibliothèques et des langages comme C#. « L'atelier complet fourni avec ses outils, dont certains coupent dans les deux sens », par analogie avec une boîte à outils dont le meilleur couteau a été retiré des ventes vingt ans après sa sortie, pour des raisons qu'on aurait pu deviner plus tôt.

Générations : Le .NET Framework, réservé à Windows, sort en 2002. .NET Core, multiplateforme et libre, apparaît en 2016 ; les deux lignées sont réunies sous le simple nom .NET à partir de la version 5, en 2020. Le .NET Framework 4.x reste maintenu pour les applications existantes, c'est-à-dire pour une bonne partie des applications existantes.

Désérialisation : Certains sérialiseurs, au premier rang desquels BinaryFormatter, reconstruisent des objets de types arbitraires désignés par les données elles-mêmes : un flux forgé déclenche alors des méthodes pendant la lecture et peut aboutir à une exécution de code à distance. Microsoft a déconseillé BinaryFormatter pendant des années, puis l'a rendu inopérant à partir de .NET 9 ; l'outil public ysoserial.net fabrique les charges d'attaque correspondantes pour les versions qui l'emploient encore.

Alias : Le terme s'écrit avec un point initial ; « dotnet » est aussi le nom de la commande en ligne qui pilote la plateforme.

Ce qui arrive si on s'en passe

Une application .NET qui désérialise des données reçues de l'extérieur avec BinaryFormatter, NetDataContractSerializer ou un sérialiseur JSON configuré pour accepter les noms de types fournis par le message, confie à l'attaquant le choix des classes à instancier. Il suffit alors d'un cookie, d'un champ caché ou d'un message de file d'attente forgé pour exécuter du code sur le serveur, avec les droits du processus applicatif. Le pare-feu ne voit qu'une requête HTTP banale, et le journal applicatif, s'il existe, une erreur de conversion sans importance.

Explication de la marmotte

.NET est un ensemble d'outils de Microsoft qui sert à écrire et faire tourner des programmes, notamment en langage C#. Beaucoup de sites et de logiciels d'entreprise l'utilisent. Comme d'autres plateformes, il sait transformer des données reçues en objets du programme, ce qu'on appelle la désérialisation. Certains de ces outils acceptent que les données choisissent elles-mêmes quel objet fabriquer, ce qui permet à un attaquant de faire exécuter son propre code. Les versions récentes ont retiré l'outil le plus dangereux.

Où ce terme est utilisé

← Tout le glossaire