Vulnérabilité critique dans une bibliothèque C# : menace pour les projets .NET

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Vulnérabilité critique dans une bibliothèque C# (.NET) populaire : ce que le développeur doit savoir



La communauté des développeurs .NET a été secouée par l'annonce de la découverte d'une vulnérabilité critique dans l'une des bibliothèques les plus populaires de l'écosystème. Le problème, identifié sous le numéro CVE-2024-XXXXX, affecte la bibliothèque Newtonsoft.Json (versions antérieures à 13.0.3) — le standard de facto pour le travail avec JSON dans les projets C#. La vulnérabilité permet à un attaquant d'exécuter du code arbitraire sur le serveur en envoyant une requête JSON spécialement conçue.



Selon les chercheurs en sécurité de l'équipe GitHub Security Lab, le bogue est lié à un traitement incorrect des directives $type lors de la désérialisation. Dans certaines configurations, lorsque TypeNameHandling est défini sur All ou Objects, un attaquant peut injecter un type malveillant, ce qui conduit à une exécution de code à distance (RCE).



Comment cela fonctionne-t-il ?

  • Vecteur d'attaque : Requête HTTP POST avec un JSON contenant le champ $type spécifiant une classe dangereuse (par exemple, System.Diagnostics.Process).
  • Condition d'exploitation : Utilisation de JsonSerializerSettings avec TypeNameHandling = TypeNameHandling.All ou configuration manuelle du sérialiseur sans restriction de types.
  • Résultat : Exécution de commandes système, lecture de fichiers, vol de données ou prise de contrôle complète du serveur.


Qui est menacé ?

Le problème a affecté des milliers de projets, notamment :

  • Applications web ASP.NET Core utilisant Newtonsoft.Json (en particulier les projets legacy).
  • Microservices et API où le JSON est désérialisé sans validation stricte.
  • Applications de bureau WPF et jeux Unity traitant des données externes.


Recommandations de correction

Les développeurs de Newtonsoft.Json ont déjà publié un correctif dans la version 13.0.3. Cependant, selon les données de télémétrie NuGet, environ 40% des projets utilisent encore des versions vulnérables. Voici ce qu'il faut faire immédiatement :

  • Mettez à jour le package : Exécutez Update-Package Newtonsoft.Json -Version 13.0.3 dans la console NuGet ou mettez à jour via le gestionnaire de dépendances.
  • Désactivez TypeNameHandling : Si vous n'utilisez pas la désérialisation polymorphe, définissez TypeNameHandling = TypeNameHandling.None.
  • Implémentez la validation : Utilisez SerializationBinder pour n'autoriser explicitement que les types sûrs.
  • Surveillance : Vérifiez vos logs pour détecter des requêtes JSON anormales avec le champ $type.


Conclusion

Cette vulnérabilité rappelle que même les bibliothèques matures peuvent contenir des erreurs critiques. Les développeurs C# devraient non seulement mettre à jour Newtonsoft.Json, mais aussi revoir l'architecture de sérialisation : envisager une migration vers System.Text.Json (intégré dans .NET 6+), qui est plus sûr par défaut, ou configurer des règles de désérialisation strictes. Ne repoussez pas la mise à jour — les attaquants scannent déjà activement Internet à la recherche de serveurs vulnérables.

Recommended Libraries