CET admitido de forma predeterminada
apphost
y singlefilehost
ahora están marcados como Intel CET, compatibles (se compilan con la /CETCOMPAT
opción ). Este cambio se realizó para mejorar la seguridad de las aplicaciones .NET. Sin embargo, impone una limitación en las bibliotecas compartidas con las que las aplicaciones .NET pueden cargar e interoperabilidad. Las bibliotecas no pueden establecer el contexto de subproceso en una ubicación con un puntero de instrucción que no está presente en la pila de sombras ni en una tabla de direcciones de continuación permitidas para el control de excepciones.
Comportamiento anterior
Anteriormente, las bibliotecas compartidas cargadas en el proceso de .NET podían establecer el contexto de subproceso mediante SetThreadContext, RtlRestoreContext/NtContinue
o sus controladores de excepciones en cualquier ubicación del espacio de direcciones del proceso.
Comportamiento nuevo
A partir de .NET 9, las bibliotecas compartidas cargadas en el proceso de .NET solo pueden establecer el contexto de subproceso mediante SetThreadContext, RtlRestoreContext/NtContinue
o sus controladores de excepciones en ubicaciones que son:
- Presente en la pila de sombras.
- En una tabla de direcciones de continuación permitidas para el control de excepciones (generada por la
/EHCONT
opción del compilador o laSetProcessDynamicEHContinuationTargets
API).
Si las bibliotecas intentan cambiar un contexto de subproceso a cualquier otra ubicación, el proceso finaliza.
Versión introducida
.NET 9 Versión preliminar 6
Tipo de cambio importante
Este cambio puede afectar a la compatibilidad binaria.
Motivo del cambio
La habilitación de CET mejora la seguridad de las aplicaciones .NET mediante la adición de protección de pila aplicada por hardware que ofrece una protección sólida contra vulnerabilidades de ROP (programación orientada a retorno).
Acción recomendada
Soluciones alternativas:
- Puedes no participar en CET agregando
<CETCompat>false</CETCompat>
al archivo de proyecto de la aplicación (por ejemplo, archivo .csproj ). - Use la aplicación Seguridad de Windows o una directiva de grupo para no participar en el cumplimiento de la pila compatible con hardware para la aplicación .NET específica. Para obtener más información, consulte Habilitación de la protección contra vulnerabilidades de seguridad.
API afectadas
- N/D