Compartilhar via


CET suportado por padrão

apphost e singlefilehost agora estão marcados como compatíveis com Intel CET (eles são compilados com a /CETCOMPAT opção). Essa alteração foi feita para aprimorar a segurança dos aplicativos .NET. No entanto, ele impõe uma limitação às bibliotecas compartilhadas que os aplicativos .NET podem carregar e interoperar. As bibliotecas não têm permissão para definir o contexto do thread para um local com um ponteiro de instrução que não está presente na pilha de sombra ou em uma tabela de endereços de continuação permitidos para tratamento de exceções.

Comportamento anterior

Anteriormente, as bibliotecas compartilhadas carregadas no processo do .NET eram capazes de definir o contexto de thread usando SetThreadContext, RtlRestoreContext

Novo comportamento

A partir do .NET 9, as bibliotecas compartilhadas carregadas no processo do .NET só têm permissão para definir o contexto de thread usando SetThreadContext, RtlRestoreContext/NtContinue

  • Presente na pilha de sombras.
  • Em uma tabela de endereços de continuação permitidos para tratamento de exceções (gerado pela opção do /EHCONT compilador ou pela SetProcessDynamicEHContinuationTargets API).

Se as bibliotecas tentarem alterar um contexto de thread para qualquer outro local, o processo será encerrado.

Versão introduzida

.NET 9 Versão Prévia 6

Tipo de alteração interruptiva

Essa alteração pode afetar a compatibilidade binária.

Motivo da alteração

A ativação do CET melhora a segurança de aplicativos .NET ao implementar proteção de pilha reforçada por hardware contra exploits de programação orientada a retorno (ROP).

Soluções alternativas:

  • Você pode recusar o CET adicionando <CETCompat>false</CETCompat> ao arquivo de projeto do seu aplicativo (por exemplo, arquivo .csproj ).
  • Use o aplicativo Segurança do Windows ou uma política de grupo para recusar a imposição de pilha com suporte de hardware para o aplicativo .NET específico. Para obter mais informações, consulte Habilitar proteção contra exploração.

APIs afetadas

  • N/D