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’APISetProcessDynamicEHContinuationTargets
).
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).
Action recommandée
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