Segurança do depuradorDebugger Security
A capacidade de depurar outro processo oferece poderes extremamente amplos que você não teria de outra forma, especialmente ao depurar remotamente.The ability to debug another process gives you extremely broad powers that you would not otherwise have, especially when debugging remotely. Um depurador mal-intencionado pode impor danos extensivos no computador que está sendo depurado.A malicious debugger could inflict widespread damage on the machine being debugged.
Porém, muitos desenvolvedores não percebem que a ameaça à segurança também pode fluir na direção oposta.However, many developers do not realize that the security threat can also flow in the opposite direction. É possível que o código mal-intencionado no processo a ser depurado possa comprometer a segurança do computador de depuração: há várias explorações de segurança das quais você deve se proteger.It is possible for malicious code in the debuggee process to jeopardize the security of the debugging machine: there are a number of security exploits that must be guarded against.
Práticas recomendadas de segurançaSecurity Best Practices
Há uma relação de confiança implícita entre o código que você está depurando e o depurador.There is an implicit trust relationship between the code you are debugging, and the debugger. Se você estiver disposto a depurar algo, também deverá estar disposto a executá-lo.If you are willing to debug something, you should also be willing to run it. Ou seja, você deve ser capaz de confiar no que está depurando.The bottom line is that you must be able to trust what you are debugging. Se você não puder confiar, não deverá depurar, ou deverá depurar de um computador com recursos que possam ser comprometidos e em um ambiente isolado.If you cannot trust it, then you should not debug it, or you should debug it from a machine that you can afford to jeopardize, and in an isolated environment.
Para reduzir a superfície de ataque potencial, a depuração deverá ser desabilitada em computadores de produção.In order to reduce the potential attack surface, debugging should be disabled on production machines. Pelo mesmo motivo, a depuração nunca deve ser habilitada indefinidamente.For the same reason, debugging should never be enabled indefinitely.
Segurança de depuração gerenciadaManaged Debugging Security
Aqui estão algumas recomendações gerais que se aplicam a todas as depurações gerenciadas.Here are some general recommendations that apply to all managed debugging.
Tenha cuidado ao anexar ao processo de um usuário não confiável: quando você faz isso, pressupõe que ele seja confiável.Be careful when attaching to an untrusted user's process: when you do so, you assume that it is trustworthy. Quando você tenta anexar a um processo de usuário não confiável, uma caixa de diálogo de confirmação de aviso de segurança será exibida perguntando se você deseja anexar ao processo.When you attempt to attach to an untrusted user's process, a security warning dialog box confirmation will appear asking whether you want to attach to the process. Os "usuários confiáveis" incluem você e um conjunto de usuários padrão, comumente definidos em computadores que tenham o .NET Framework instalado, por exemplo, aspnet, localsystem, networkservice e localservice."Trusted users" include you, and a set of standard users commonly defined on machines that have the .NET Framework installed, such as aspnet, localsystem, networkservice, and localservice. Para obter mais informações, consulte aviso de segurança: anexar a um processo de propriedade de um usuário não confiável pode ser perigoso. Se as informações a seguir parecerem suspeitas ou se você não tiver certeza, não anexe a esse processo.For more information, see Security Warning: Attaching to a process owned by an untrusted user can be dangerous. If the following information looks suspicious or you are unsure, do not attach to this process.
Tenha cuidado ao baixar um projeto fora da Internet e carregá-lo no Visual StudioVisual Studio.Be careful when downloading a project off the Internet and loading it into Visual StudioVisual Studio. Isso é muito arriscado de fazer mesmo sem depuração.This is very risky to do even without debugging. Quando você fizer isso, estará supondo que o projeto e o código que contém sejam confiáveis.When you do this, you are assuming that the project and the code that it contains are trustworthy.
Para obter mais informações, consulte Depurando código gerenciado.For more information, see Debugging Managed Code.
Segurança de depuração remotaRemote Debugging Security
A depuração local é geralmente mais segura do que a depuração remota.Local debugging is generally safer than remote debugging. A depuração remota aumenta a área da superfície total que pode ser analisada.Remote debugging increases the total surface area that can be probed.
O Monitor de Depuração Remota do Visual Studio (msvsmon.exe) é usado na depuração remota e há várias recomendações de segurança para configurá-lo.The Visual Studio Remote Debugging Monitor (msvsmon.exe) is used in remote debugging, and there are several security recommendations for configuring it. O modo preferido de configurar o modo de autenticação é a autenticação do Windows, pois Modo Sem Autenticação não é seguro.The preferred way to configure the authentication mode is Windows Authentication, because No Authentication mode is insecure.
Ao usar o modo de autenticação do Windows, lembre-se de que a concessão de uma permissão de usuário não confiável para se conectar ao msvsmon é perigosa, pois o usuário recebe todas as suas permissões no computador que hospeda o msvsmon.When using Windows Authentication mode, be aware that granting an untrusted user permission to connect to msvsmon is dangerous, because the user is granted all your permissions on the computer hosting msvsmon.
Não depurar um processo desconhecido em um computador remoto: há possíveis explorações que podem afetar o computador que executa o depurador ou que podem comprometer o msvsmon.Do not debug an unknown process on a remote machine: there are potential exploits that might affect the machine running the debugger, or that might compromise msvsmon. Se for absolutamente necessário depurar um processo desconhecido, tente depurá-lo localmente e use um firewall para manter todas as ameaças potenciais localizadas.If you absolutely must debug an unknown process, try debugging locally, and use a firewall to keep any potential threats localized.
Para obter informações sobre como configurar o msvsmon, consulte Configurar o depurador remoto.For information on configuring msvsmon, see Set up the remote debugger.
Segurança de depuração de serviços WebWeb Services Debugging Security
É mais seguro depurar localmente, mas como você provavelmente não terá o Visual StudioVisual Studio instalado no servidor Web, a depuração local não poderá ser prática.It is safer to debug locally, but since you probably do not have Visual StudioVisual Studio installed on the web server, local debugging might not be practical. Em geral, depurar serviços Web é feito remotamente, exceto durante o desenvolvimento, de modo que as recomendações para a segurança de depuração remota também se aplicarão à depuração de serviços Web.Generally, debugging Web services is done remotely, except during development, so the recommendations for remote debugging security also apply to Web services debugging. Aqui estão algumas práticas recomendadas adicionais.Here are some additional best practices. Para obter mais informações, consulte DEBUGGING XML Web Services.For more information, see Debugging XML Web Services.
Não habilite a depuração em um servidor Web que tenha sido comprometido.Do not enable debugging on a Web server that has been compromised.
Verifique se você sabe que o servidor Web está seguro antes de depurá-lo.Make sure you know the Web server is secure before debugging it. Se você não tiver certeza se ele está seguro, não o depure.If you are not sure it is secure, do not debug it.
Tenha um cuidado especial se estiver depurando um serviço Web que está exposto na Internet.Be especially careful if you are debugging a Web service that is exposed on the Internet.
Componentes externosExternal Components
Conheça o status de confiança de componentes externos com os quais seu programa interage, especialmente se você não escreveu o código.Be aware of the trust status of external components that your program interacts with, especially if you did not write the code. Esteja ciente também dos componentes que o Visual StudioVisual Studio ou o depurador podem usar.Also be aware of components that Visual StudioVisual Studio or the debugger might use.
Símbolos e código-fonteSymbols and Source Code
As duas ferramentas do Visual StudioVisual Studio que demandam preocupações com segurança são as seguintes:Two Visual StudioVisual Studio tools that require thinking about security are the following:
O Servidor de Origem, que fornece versões do código-fonte de um repositório de códigos-fonte.Source Server, which provides you with versions of source code from a source code repository. É útil quando você não tem a versão atual do código-fonte de um programa.It is useful when you do not have the current version of a program's source code. Aviso de segurança: o depurador deve executar o comando não confiável.Security Warning: Debugger Must Execute Untrusted Command.
O servidor do símbolo, que é usado para fornecer os símbolos necessárias para depurar uma falha durante uma chamada do sistema.Symbol Server, which is used to supply the symbols needed to debug a crash during a system call.
Confira Especificar arquivos de símbolo (.pdb) e de origemSee Specify Symbol (.pdb) and Source Files
Confira tambémSee also
- Configurações e preparação do depuradorDebugger Settings and Preparation
- Introdução ao depuradorFirst look at the debugger
- Aviso de segurança Anexar a um processo pertencente a um usuário não confiável pode ser perigoso. Se as informações a seguir parecerem suspeitas ou você não tiver certeza, não anexe a esse processoSecurity Warning: Attaching to a process owned by an untrusted user can be dangerous. If the following information looks suspicious or you are unsure, do not attach to this process
- Aviso de segurança: o depurador deve executar o comando não confiávelSecurity Warning: Debugger Must Execute Untrusted Command