Sdílet prostřednictvím


Funkce CET je ve výchozím nastavení podporovaná

apphost a singlefilehost jsou nyní označeny jako Intel CET – kompatibilní (jsou zkompilovány s /CETCOMPAT možností). Tato změna byla provedena kvůli zvýšení zabezpečení aplikací .NET. Omezuje ale sdílené knihovny, se kterými můžou aplikace .NET načítat a interopovat. Knihovny nemohou nastavit kontext vlákna na umístění s ukazatelem instrukce, který není v zásobníku stínu nebo v tabulce povolených adres pokračování pro zpracování výjimek.

Předchozí chování

Dříve byly sdílené knihovny načtené do procesu .NET schopny nastavit kontext vlákna pomocí SetThreadContext, RtlRestoreContext/NtContinue

Nové chování

Počínaje rozhraním .NET 9 jsou sdílené knihovny načtené do procesu .NET povoleny pouze k nastavení kontextu vlákna pomocí setThreadContext, RtlRestoreContext/NtContinue

  • Prezentovat ve stínovém zásobníku.
  • V tabulce povolených adres pro pokračování pro zpracování výjimek (generované /EHCONT možností kompilátoru SetProcessDynamicEHContinuationTargets nebo rozhraním API)

Pokud se knihovny pokusí změnit kontext vlákna na jiné umístění, proces se ukončí.

Zavedená verze

.NET 9 Preview 6

Typ zásadní změny

Tato změna může ovlivnit binární kompatibilitu.

Důvod změny

Povolení CET vylepšuje zabezpečení aplikací .NET díky akceptování ochrany zásobníku vynucené hardwarem proti zneužití technikou Return-Oriented Programming (ROP).

Alternativní řešení:

  • Cet můžete zrušit přidáním <CETCompat>false</CETCompat> do souboru projektu vaší aplikace (například souboru .csproj ).
  • Pomocí aplikace Zabezpečení Windows nebo zásad skupiny se odhlaste z vynucení zásobníku podporovaného hardwarem pro konkrétní aplikaci .NET. Další informace naleznete v tématu Povolení ochrany zneužití.

Ovlivněná rozhraní API