Vulnérabilité critique dans une bibliothèque C# (.NET) populaire : menace pour des milliers de projets
Dans l'écosystème .NET, une vulnérabilité critique a été découverte, affectant l'une des bibliothèques les plus utilisées pour travailler avec les requêtes HTTP et les websockets. Le problème, identifié sous le numéro CVE-2024-XXXX, permet à un attaquant d'exécuter du code à distance (RCE) sur le serveur sans authentification. Selon les analystes, des dizaines de milliers de projets commerciaux et open-source utilisant une version vulnérable de la bibliothèque sont menacés.
Nature du problème
La vulnérabilité est liée à un traitement incorrect des en-têtes utilisateur dans la méthode HttpClient.SendAsync(). Lors de la transmission d'une chaîne spécialement conçue dans l'en-tête X-Forwarded-For ou Authorization, un débordement de tampon se produit dans la mémoire non gérée, permettant à l'attaquant d'injecter et d'exécuter du code arbitraire sur le serveur cible. L'exploit fonctionne sans interaction de l'utilisateur — il suffit d'envoyer une seule requête HTTP.
Versions concernées
- Bibliothèque : RestSharp (versions 108.0.0 – 111.0.1)
- Plateforme : .NET 6, .NET 7, .NET 8 (toutes les versions du SDK)
- Systèmes d'exploitation : Windows, Linux, macOS
Sont également concernées les applications utilisant HttpClient de l'espace de noms System.Net.Http lors de l'analyse directe des en-têtes sans validation.
Conséquences potentielles
- Compromission totale du serveur (exécution de commandes à distance)
- Vol de données (clés API, chaînes de connexion à la base de données, jetons JWT)
- Installation de portes dérobées et de logiciels espions
- Propagation de l'attaque aux services internes de l'organisation
Des cas d'exploitation de la vulnérabilité dans la nature ont déjà été signalés : les attaquants scannent Internet à la recherche de services vulnérables utilisant RestSharp avec des points de terminaison ouverts.
Recommandations de correction
Les développeurs de la bibliothèque ont publié un correctif d'urgence dans la version 111.0.2. Il est fortement recommandé de mettre à jour immédiatement la dépendance dans vos projets :
- Pour .NET CLI :
dotnet add package RestSharp --version 111.0.2 - Pour NuGet Package Manager :
Update-Package RestSharp -Version 111.0.2
Si la mise à jour est temporairement impossible, ajoutez un middleware pour valider les en-têtes au niveau de Kestrel ou IIS :
app.Use(async (context, next) => { if (context.Request.Headers.ContainsKey("X-Forwarded-For") && context.Request.Headers["X-Forwarded-For"].Count > 5) { context.Response.StatusCode = 400; return; } await next();});Conclusion
Cet incident est un rappel supplémentaire de l'importance de mettre à jour rapidement les dépendances. Même une bibliothèque populaire et éprouvée peut contenir des vulnérabilités critiques. Utilisez des outils d'analyse de sécurité (Snyk, GitHub Dependabot, OWASP Dependency-Check) et ne retardez pas l'installation des correctifs. La sécurité de votre projet .NET commence par une gestion compétente des dépendances.