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
nebo jejich obslužných rutin výjimek do libovolného umístění v adresním prostoru procesu.
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
nebo jejich obslužných rutin výjimek do umístění, která jsou:
- 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átoruSetProcessDynamicEHContinuationTargets
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 zvyšuje zabezpečení aplikací .NET přidáním ochrany zásobníku vynucené hardwarem, která nabízí robustní ochranu proti zneužití ROP (návratově orientované programování).
Doporučená akce
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
- –