En bref

  • Microsoft publie en urgence .NET 10.0.7 pour corriger une faille critique ASP.NET Core Data Protection (CVSS 9.1).
  • Versions affectées : Microsoft.AspNetCore.DataProtection 10.0.0 à 10.0.6 sur Linux, macOS et Windows avec algorithmes managés.
  • Action : mise à jour immédiate du paquet NuGet vers 10.0.7 requise.

Les faits

Points clés à retenir

  • Les faits
  • Impact et exposition
  • Recommandations

Microsoft a diffusé le 22 avril 2026 une mise à jour de sécurité hors cycle (out-of-band) destinée à corriger CVE-2026-40372, une vulnérabilité d'élévation de privilèges évaluée à 9.1 sur l'échelle CVSS. La faille CVE-2026-40372 ASP.NET Core affecte le paquet NuGet Microsoft.AspNetCore.DataProtection, brique centrale utilisée pour chiffrer les cookies d'authentification, les jetons antiforgery et les données de session de millions d'applications web. Le correctif est distribué via la version .NET 10.0.7, publiée simultanément sur Windows Update, les images conteneurs officielles et le flux NuGet. Selon l'éditeur, un attaquant disposant d'un accès authentifié limité peut forger des charges protégées et obtenir des privilèges administrateur sur l'application ciblée, sans interaction utilisateur. Compte tenu du score critique et de la relative simplicité d'exploitation, Microsoft recommande un déploiement immédiat, sans attendre le prochain Patch Tuesday.

Selon l'advisory Microsoft, le chiffreur authentifié managé calculait sa balise de validation HMAC sur les mauvais octets du payload puis abandonnait le hash calculé. Conséquence : un attaquant non authentifié pouvait forger des cookies d'authentification acceptés par le serveur et obtenir des privilèges SYSTEM sur la machine cible. Le bug a été introduit dans la version 10.0.0 et concerne toutes les versions 10.0.0 à 10.0.6.

Impact et exposition

Trois configurations sont vulnérables : les déploiements ASP.NET Core sur Linux, les déploiements sur macOS, et les déploiements Windows qui ont explicitement activé UseCustomCryptographicAlgorithms. Les applications Windows par défaut, qui s'appuient sur l'API Data Protection native Windows (DPAPI), ne sont pas affectées. En pratique, cela vise surtout les applications conteneurisées, les workloads Kubernetes ASP.NET Core et les services managés Linux, soit une part massive de l'écosystème .NET moderne.

Recommandations

  • Mettre à jour immédiatement Microsoft.AspNetCore.DataProtection vers la version 10.0.7 dans tous les projets affectés, puis redéployer.
  • Faire tourner dotnet list package --vulnerable sur l'ensemble des solutions pour identifier les versions exposées avant mise à jour.
  • Invalider les clés Data Protection existantes après patch (rotation du keyring) pour révoquer les éventuels cookies forgés avant le correctif.
  • Inspecter les logs d'authentification des 30 derniers jours à la recherche de sessions anormales, d'IPs inhabituelles, de cookies acceptés avec des signatures suspectes.

Alerte critique

La vulnérabilité permet une élévation de privilèges vers SYSTEM sans authentification. Tout serveur ASP.NET Core Linux exposé sur Internet doit être patché dans les heures qui viennent. Le risque d'exploitation de masse augmente chaque jour où le correctif n'est pas appliqué.

Mon application tourne sur Windows sans configuration custom, suis-je concerné ?

Non, si vous n'avez pas appelé UseCustomCryptographicAlgorithms, vous utilisez DPAPI qui n'est pas affecté. Vérifiez néanmoins vos dépendances avec dotnet list package.

Faut-il régénérer les clés Data Protection après le patch ?

Oui, c'est recommandé. Un attaquant ayant forgé un cookie avant le patch verrait encore sa session valide tant que les clés ne sont pas rotées. Procédez à une rotation complète du keyring.

Décryptage technique de la faille

Le vecteur CVSSv3.1 officiel de CVE-2026-40372 est AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H (score 9.1) : la faille est exploitable à distance (AV:N), sans complexité d'attaque particulière (AC:L), sans privilège préalable (PR:N) ni interaction utilisateur (UI:N). L'impact est maximal sur les trois piliers confidentialité, intégrité et disponibilité, ce qui reflète la possibilité de forger un cookie d'authentification valide puis d'agir avec les privilèges du compte de service exécutant l'application — souvent SYSTEM sur les workloads conteneurisés exécutés sans isolation stricte.

Sur le plan cryptographique, le bug se situe dans la classe ManagedAuthenticatedEncryptor du sous-système Data Protection : lors du calcul du tag HMAC-SHA256 destiné à authentifier le payload chiffré, l'implémentation lisait un mauvais segment du buffer avant de rejeter le résultat calculé au profit d'une valeur non initialisée dans certains chemins de code. Un attaquant capable d'observer plusieurs cookies légitimes pouvait, par un processus de recherche de collision facilité par cette erreur de bornage mémoire, reconstruire un cookie d'authentification arbitraire sans jamais connaître la clé maître stockée côté serveur. Ce type de défaut — erreur de validation d'intégrité plutôt que fuite de clé — explique pourquoi Microsoft a qualifié la faille de « logic bug » plutôt que de vulnérabilité cryptographique classique de type Padding Oracle.

Détection et outils de vérification

  • dotnet list package --vulnerable --include-transitive révèle les références indirectes à Microsoft.AspNetCore.DataProtection via des packages tiers (SignalR, Identity, Blazor Server) qui embarquent souvent la dépendance sans que l'équipe applicative en ait conscience.
  • GitHub Advisory Database référence l'avis sous GHSA correspondant, permettant l'intégration automatique dans Dependabot et Renovate pour les dépôts publics comme privés.
  • Les scanners SCA (Snyk, Trivy, OWASP Dependency-Check) intègrent déjà des règles de détection basées sur le numéro de version du package NuGet, sans nécessiter d'analyse comportementale.
  • Pour les environnements Kubernetes, un audit des images de conteneurs via trivy image ou grype permet de repérer les couches contenant une version vulnérable du SDK .NET 10 embarqué.

Mon application tourne sur Windows sans configuration custom, suis-je concerné ?

Non, dans la configuration par défaut. Les applications ASP.NET Core déployées sur Windows délèguent la protection des clés à DPAPI, une API native du système d'exploitation qui n'implémente pas le chiffreur managé vulnérable. Vous restez cependant exposé si votre application définit explicitement services.AddDataProtection().UseCryptographicAlgorithms(...) ou UseCustomCryptographicAlgorithms(...) dans la configuration du pipeline, ou si elle partage un keyring Data Protection avec des instances Linux dans une architecture hybride — un scénario fréquent lors de migrations progressives vers des conteneurs.

Faut-il régénérer les clés Data Protection après le patch ?

La mise à jour vers 10.0.7 corrige le calcul du tag HMAC mais ne révoque pas rétroactivement les cookies déjà forgés avant le déploiement du correctif. Microsoft recommande une rotation complète du keyring (suppression ou expiration forcée des clés existantes dans le magasin configuré — système de fichiers, Azure Blob Storage, ou Redis) afin d'invalider toute session active. Cette rotation déconnectera l'ensemble des utilisateurs authentifiés, un compromis à planifier en dehors des heures de forte charge.

Votre infrastructure ASP.NET est-elle exposée ?

Un audit rapide croise trois éléments : la version du SDK .NET déployée (dotnet --info), le système d'exploitation cible (Linux/macOS systématiquement à risque, Windows conditionnel), et la présence éventuelle de partage de clés Data Protection entre plusieurs services. Les organisations exploitant des clusters Kubernetes multi-OS ou des architectures de microservices hétérogènes présentent le niveau de risque le plus élevé, notamment lorsque les cookies d'authentification transitent entre des pods Linux et des services Windows historiques.

Votre infrastructure ASP.NET est-elle exposée ?

Ayi NEDJIMI réalise des audits de sécurité ciblés pour identifier et corriger vos vulnérabilités avant qu'elles ne soient exploitées.

Demander un audit

Sources et références