CET wordt standaard ondersteund
apphost
en singlefilehost
zijn nu gemarkeerd als Intel CET- compatibel (ze zijn gecompileerd met de /CETCOMPAT
optie). Deze wijziging is aangebracht om de beveiliging van .NET-toepassingen te verbeteren. Het legt echter een beperking op voor de gedeelde bibliotheken waarmee .NET-apps kunnen worden geladen en ermee kunnen samenwerken. Bibliotheken mogen threadcontext niet instellen op een locatie met een instructieaanwijzer die niet aanwezig is in de schaduwstack of in een tabel met toegestane vervolgadressen voor het verwerken van uitzonderingen.
Vorig gedrag
Eerder konden gedeelde bibliotheken die in het .NET-proces zijn geladen, threadcontext instellen met SetThreadContext, RtlRestoreContext/NtContinue
of hun uitzonderingshandlers naar een locatie in de adresruimte van het proces.
Nieuw gedrag
Vanaf .NET 9 mogen gedeelde bibliotheken die in het .NET-proces zijn geladen, alleen threadcontext instellen met SetThreadContext, RtlRestoreContextNtContinue
/ of hun uitzonderingshandlers naar locaties die:
- Aanwezig op de schaduwstack.
- In een tabel met toegestane vervolgadressen voor uitzonderingsafhandeling (gegenereerd door de
/EHCONT
compileroptie of deSetProcessDynamicEHContinuationTargets
API).
Als bibliotheken proberen een threadcontext te wijzigen in een andere locatie, wordt het proces beëindigd.
Versie geïntroduceerd
.NET 9 Preview 6
Type wijziging die fouten veroorzaken
Deze wijziging kan van invloed zijn op binaire compatibiliteit.
Reden voor wijziging
Het inschakelen van CET verbetert de beveiliging van .NET-toepassingen door hardware-afgedwongen stackbeveiliging toe te voegen die robuuste bescherming biedt tegen ROP-aanvallen (return-oriented programming).
Aanbevolen actie
Tijdelijke oplossingen:
- U kunt zich afmelden voor CET door dit toe te voegen aan
<CETCompat>false</CETCompat>
het projectbestand van uw app (bijvoorbeeld .csproj-bestand ). - Gebruik de Windows-beveiliging-app of een groepsbeleid om af te zien van de door hardware ondersteunde stack-afdwinging voor de specifieke .NET-toepassing. Zie Exploit Protection inschakelen voor meer informatie.
Betrokken API's
- N.v.t.