Considerações de segurança na API de depuração
As considerações de segurança para usar o common language runtime (CLR) API de depuração são:
Anexação a processo. No Windows NT e no Windows 2000, o processo de depuração deve ser criado com um descritor de segurança concede o depurador acesso completo. O processo de depuração deve ter o SE_DEBUG_NAME permissão concedida e habilitado para depurar qualquer processo. Um administrador de Windows NT ou o Windows 2000, essa permissão é concedido por padrão. Windows 95, Windows 98 e Windows CE não fornecem esse nível de segurança porque eles não impor requisitos especiais para a anexação a processo.
Injeção de código dinâmico. Um assembly é verificado quando ele for carregado. Durante a inclusão de código dinâmico, o depurador modifica alguns códigos e envia um delta arquivo executável portável (PE) para o processo de depuração. O delta PE não é verificado. Os métodos atualizados são verificados depois que são compilados pelo compilador just-in-time (JIT). Para obter mais informações sobre a inclusão de código dinâmico, consulte Injetando código dinamicamente com a API de depuração.
Modificação de metadados do conjunto de assinado. A integridade de um assembly é verificada e as permissões corretas são concedidas apenas quando um assembly assinado é carregado. Se um depurador modifica o código em execução, alterando os metadados que está associado com o depurado, esta operação altera o hash que computa a assinatura do assembly. A operação não fará verificações de segurança adicionais. As permissões que foram atribuídas pelo tempo de execução ainda são válidas.
A depuração de um processo hostil. Não use a API de depuração para depurar um processo potencialmente hostil por dois motivos principais. Primeiro, a infra-estrutura de depuração não é imune a processos batizada especialmente criados que podem explorar as vulnerabilidades. Em segundo lugar, interromper um processo durante a depuração de gerenciados somente pode envolver alguns adiamento antes da parada real. Portanto, não há nenhuma garantia de que uma determinada linha de código não será executado.
Consulte também
Conceitos
Visão geral de depuração do CLR