Compartilhar via


Considerações sobre segurança do visualizador

Escrever um Visualizador envolve possíveis ameaças à segurança. Nenhuma exploração conhecida existe atualmente para essas ameaças potenciais, mas os desenvolvedores devem estar cientes delas e tomar as precauções de segurança apropriadas, conforme descrito aqui, para se proteger contra explorações futuras.

Os visualizadores do depurador exigem privilégios maiores do que aqueles permitidos por um aplicativo de confiança parcial. Os visualizadores não serão carregados quando a execução do código for interrompida com confiança limitada. Para depurar usando um visualizador, você deve executar o código com total confiança.

Observação

O CAS (Code Access Security) foi preterido em todas as versões do .NET Framework e do .NET. As versões recentes do .NET não respeitam as anotações "CAS" e produzem erros se as APIs relacionadas ao CAS forem usadas. Os desenvolvedores devem buscar meios alternativos para realizar tarefas de segurança.

Possível componente de depurado mal-intencionado

Os visualizadores consistem em pelo menos duas classes: uma no lado do depurador e outra no lado de depuração. Os visualizadores geralmente são implantados em assemblies separados colocados em diretórios especiais, mas também podem ser carregados fora do depurador. Quando isso ocorre, o depurador retira o código do programa depurado e o executa dentro do próprio depurador com total confiança.

A execução de código do lado de depuração com confiança total torna-se problemática quando o depurador não é totalmente confiável. Se um visualizador tentar carregar um assembly com confiança parcial do programa em depuração para o depurador, o Visual Studio encerrará o visualizador.

No entanto, uma vulnerabilidade secundária ainda existe. O lado do depurador pode associar a um lado do depurador que foi carregado de outra origem (não do depurador). O lado depurado pode, então, instruir o lado do depurador confiável a executar ações em seu nome. Se a classe confiável do lado do depurador expuser um mecanismo de "excluir este arquivo", por exemplo, o programa depurado com confiança parcial poderá invocar esse mecanismo quando o usuário invocar seu visualizador.

Para atenuar essa vulnerabilidade, esteja atento às interfaces expostas pelo visualizador.