Alapértelmezés szerint támogatott CET
apphost
és singlefilehost
mostantól Intel CET-kompatibilisként vannak megjelölve (a beállítással /CETCOMPAT
lefordítva). Ez a módosítás a .NET-alkalmazások biztonságának növelése érdekében történt. Azonban korlátozást vezet be azokra a megosztott kódtárakra, amelyekkel a .NET-alkalmazások betölthetnek és együttműködhetnek. A kódtárak nem állíthatják be a szálkörnyezetet olyan helyre, ahol az utasításmutató nem található az árnyékveremen vagy a kivételkezeléshez engedélyezett folytatási címek táblájában.
Előző viselkedés
Korábban a .NET-folyamatba betöltött megosztott kódtárak a SetThreadContext, az RtlRestoreContextNtContinue
/ vagy a kivételkezelők használatával a folyamatcímtér bármely helyére be tudták állítani a szálkörnyezetet.
Új viselkedés
A .NET 9-től kezdődően a .NET-folyamatba betöltött megosztott kódtárak csak a SetThreadContext, az RtlRestoreContext/NtContinue
vagy a kivételkezelők használatával állíthatják be a szálkörnyezetet a következő helyekre:
- Az árnyékveremen jelenik meg.
- A kivételkezelés engedélyezett folytatási címeinek táblázatában (amelyet a fordító vagy az
/EHCONT
SetProcessDynamicEHContinuationTargets
API hoz létre).
Ha a kódtárak megpróbálnak más helyre módosítani egy szálkörnyezetet, a folyamat leáll.
Bevezetett verzió
.NET 9 előzetes verzió 6
A kompatibilitástörő változás típusa
Ez a változás befolyásolhatja a bináris kompatibilitást.
A változás oka
A CET engedélyezése növeli a .NET-alkalmazások biztonságát a hardveresen kényszerített veremvédelem hozzáadásával, amely robusztus védelmet nyújt a ROP-kihasználások ellen (visszatérés-orientált programozás).
Javasolt művelet
Áthidaló megoldások:
- Az alkalmazás projektfájljához (például .csproj fájlhoz) hozzáadva
<CETCompat>false</CETCompat>
letilthatja a CET-et. - A Windows biztonság alkalmazással vagy csoportházirenddel tilthatja le az adott .NET-alkalmazás hardver által támogatott verem-kényszerítését. További információ: A kihasználtság elleni védelem engedélyezése.
Érintett API-k
- n/a