Partager via


CET pris en charge par défaut

apphost et singlefilehost sont désormais marqués comme Intel CET , compatibles (ils sont compilés avec l’option /CETCOMPAT ). Cette modification a été apportée pour améliorer la sécurité des applications .NET. Toutefois, elle impose une limitation aux bibliothèques partagées avec laquelle les applications .NET peuvent charger et interagir. Les bibliothèques ne sont pas autorisées à définir le contexte de thread sur un emplacement avec un pointeur d’instruction qui n’est pas présent sur la pile d’ombres ou dans une table d’adresses de continuation autorisées pour la gestion des exceptions.

Comportement précédent

Auparavant, les bibliothèques partagées chargées dans le processus .NET pouvaient définir le contexte de thread à l’aide de SetThreadContext, de RtlRestoreContext/NtContinue ou de leurs gestionnaires d’exceptions sur n’importe quel emplacement dans l’espace d’adressage du processus.

Nouveau comportement

À compter de .NET 9, les bibliothèques partagées chargées dans le processus .NET sont uniquement autorisées à définir le contexte de thread à l’aide de SetThreadContext, de RtlRestoreContext/NtContinue ou de leurs gestionnaires d’exceptions aux emplacements suivants :

  • Présent sur la pile d’ombres.
  • Dans une table des adresses de continuation autorisées pour la gestion des exceptions (générée par l’option /EHCONT du compilateur ou l’API SetProcessDynamicEHContinuationTargets ).

Si les bibliothèques tentent de modifier un contexte de thread à un autre emplacement, le processus est arrêté.

Version introduite

.NET 9 Preview 6

Type de changement cassant

Ce changement peut affecter la compatibilité binaire.

Raison du changement

L’activation de CET améliore la sécurité des applications .NET en ajoutant une protection de pile appliquée par le matériel qui offre une protection robuste contre les attaques ROP (programmation orientée retour).

Solutions de contournement :

  • Vous pouvez désactiver CET en ajoutant <CETCompat>false</CETCompat> le fichier projet de votre application (par exemple, fichier .csproj ).
  • Utilisez l’application Sécurité Windows ou une stratégie de groupe pour refuser l’application de pile prise en charge par le matériel pour l’application .NET spécifique. Pour plus d’informations, consultez Activer la protection contre les attaques.

API affectées

  • N/A