Dela via


CET stöds som standard

apphost och singlefilehost är nu markerade som Intel CET – kompatibla (de kompileras med /CETCOMPAT alternativet ). Den här ändringen gjordes för att förbättra säkerheten för .NET-program. Det medför dock en begränsning för de delade bibliotek som .NET-appar kan läsa in och interop med. Bibliotek får inte ange trådkontext till en plats med en instruktionspekare som inte finns i skuggstacken eller i en tabell med tillåtna fortsättningsadresser för undantagshantering.

Tidigare beteende

Tidigare kunde delade bibliotek som lästs in i .NET-processen ange trådkontext med SetThreadContext, RtlRestoreContext/NtContinue eller deras undantagshanterare till valfri plats i processadressutrymmet.

Nytt beteende

Från och med .NET 9 kan delade bibliotek som läses in i .NET-processen endast ange trådkontext med SetThreadContext, RtlRestoreContext/NtContinue eller deras undantagshanterare till platser som antingen är:

  • Finns på skuggstacken.
  • I en tabell med tillåtna fortsättningsadresser för undantagshantering (genereras av /EHCONT kompilatoralternativet eller API:et SetProcessDynamicEHContinuationTargets ).

Om bibliotek försöker ändra en trådkontext till någon annan plats avslutas processen.

Version introducerad

Förhandsversion 6 av .NET 9

Typ av icke-bakåtkompatibel ändring

Den här ändringen kan påverka binär kompatibilitet.

Orsak till ändringen

Genom att aktivera CET förbättras säkerheten för .NET-program genom att lägga till maskinvarustyrt stackskydd som ger robust skydd mot ROP-sårbarheter (returorienterad programmering).

Provisoriska lösningar:

  • Du kan välja bort CET genom att lägga <CETCompat>false</CETCompat> till i appens projektfil (till exempel .csproj-fil ).
  • Använd Windows-säkerhet-appen eller en grupprincip för att välja bort den maskinvarustödda stacktillämpningen för det specifika .NET-programmet. Mer information finns i Aktivera exploateringsskydd.

Berörda API:er

  • Ej tillämpligt