DebuggersicherheitDebugger Security

Die Fähigkeit zum Debuggen eines anderen Prozesses verleiht Ihnen weitreichende Möglichkeiten, die sonst nicht zur Verfügung stehen. Dies gilt insbesondere für das Remotedebuggen.The ability to debug another process gives you extremely broad powers that you would not otherwise have, especially when debugging remotely. Ein bösartiger Debugger könnte sich diese Möglichkeiten zunutze machen und auf dem zu debuggenden Computer schwere Schäden verursachen.A malicious debugger could inflict widespread damage on the machine being debugged.

Viele Entwickler sind sich jedoch der Tatsache nicht bewusst, dass die Sicherheit auch in entgegengesetzter Richtung bedroht werden kann.However, many developers do not realize that the security threat can also flow in the opposite direction. Bösartiger Code im zu debuggenden Prozess kann die Sicherheit des debuggenden Computers gefährden: Es gibt eine Reihe von Angriffsmöglichkeiten, gegen die Vorsichtsmaßnahmen zu treffen sind.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.

Empfohlene Vorgehensweisen bezüglich der SicherheitSecurity Best Practices

Zwischen dem Debugger und dem zu debuggenden Code besteht ein implizites Vertrauensverhältnis.There is an implicit trust relationship between the code you are debugging, and the debugger. Sie sollten ein Codefragment nur debuggen, wenn Sie auch bereit wären, es auszuführen.If you are willing to debug something, you should also be willing to run it. Die Grundfrage besteht darin, ob Sie dem zu debuggenden Code vertrauen können.The bottom line is that you must be able to trust what you are debugging. Wenn Sie dem Code nicht vertrauen können, sollten Sie ihn nicht debuggen, oder Sie sollten ihn von einem Computer aus debuggen, bei dem die mögliche Gefährdung der Sicherheit kein Problem darstellt, da er sich in einer isolierten Umgebung befindet.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.

Um möglichst wenig Angriffsfläche zu bieten, sollte das Debuggen auf Produktionscomputern deaktiviert werden.In order to reduce the potential attack surface, debugging should be disabled on production machines. Aus demselben Grund sollte das Debuggen niemals für unbegrenzte Zeit aktiviert werden.For the same reason, debugging should never be enabled indefinitely.

Sicherheit bei verwaltetem DebuggenManaged Debugging Security

Im Folgenden finden Sie allgemeine Empfehlungen für das verwaltete Debuggen.Here are some general recommendations that apply to all managed debugging.

Sicherheit beim RemotedebuggenRemote Debugging Security

Lokales Debuggen ist im Allgemeinen sicherer als Remotedebuggen.Local debugging is generally safer than remote debugging. Beim Remotedebuggen wird eine wesentlich größere Angriffsfläche geboten, die ausgenutzt werden könnte.Remote debugging increases the total surface area that can be probed.

Beim Remotedebuggen wird der Visual Studio-Remotedebugmonitor (msvsmon.exe) verwendet, bei dessen Konfiguration verschiedene Sicherheitsempfehlungen beachtet werden sollten.The Visual Studio Remote Debugging Monitor (msvsmon.exe) is used in remote debugging, and there are several security recommendations for configuring it. Der bevorzugte Authentifizierungsmodus ist die Windows-Authentifizierung, da der Modus Keine Authentifizierung ein Sicherheitsrisiko darstellt.The preferred way to configure the authentication mode is Windows Authentication, because No Authentication mode is insecure.

Dialogfeld "Fehler"Error dialog

Bedenken Sie bei Verwendung des Windows-Authentifizierungsmodus, dass ein gewisses Sicherheitsrisiko vorliegt, wenn Sie einem nicht vertrauenswürdigen Benutzer die Berechtigung zur Verbindungsherstellung mit "msvsmon" gewähren, da der Benutzer sämtliche Zugriffsrechte auf den Computer erhält.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..

Debuggen Sie niemals einen unbekannten Prozess auf einem Remotecomputer: Es existieren verschiedene Angriffe, die den Computer beeinträchtigen können, auf dem der Debugger ausgeführt wird, oder die den Visual Studio-Remotedebugmonitor msvsmon.exe gefährden können.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.exe, the Visual Studio Remote Debugging Monitor. Wenn sich das Debuggen eines unbekannten Prozesses nicht vermeiden lässt, versuchen Sie, den Prozess lokal zu debuggen, und verwenden Sie eine Firewall, damit die Bedrohung auf den lokalen Computer beschränkt bleibt.If you absolutely must debug an unknown process, try debugging locally, and use a firewall to keep any potential threats localized.

Weitere Informationen finden Sie unter Remotedebuggen.For more information, see Remote Debugging.

Sicherheit beim Debuggen von WebdienstenWeb Services Debugging Security

Lokales Debuggen ist sicherer, aber häufig nicht durchführbar, da Visual StudioVisual Studio wahrscheinlich nicht auf dem Webserver installiert ist.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. Das Debuggen von Webdiensten erfolgt außer während der Entwicklung im Allgemeinen remote. Daher gelten die Empfehlungen für die Sicherheit beim Remotedebuggen auch für das Debuggen von Webdiensten.Generally, debugging Web services is done remotely, except during development, so the recommendations for remote debugging security also apply to Web services debugging. Im Folgenden finden Sie einige zusätzlich empfohlene Vorgehensweisen.Here are some additional best practices. Weitere Informationen finden Sie unter Debugging XML Web Services.For more information, see Debugging XML Web Services.

  • Aktivieren Sie das Debuggen nicht auf einem Webserver, dessen Sicherheit gefährdet ist.Do not enable debugging on a Web server that has been compromised.

  • Überprüfen Sie vor dem Debuggen die Sicherheit des Webservers.Make sure you know the Web server is secure before debugging it. Debuggen Sie ihn nicht, wenn Sie nicht von seiner Sicherheit überzeugt sind.If you are not sure it is secure, do not debug it.

  • Seien Sie besonders vorsichtig, wenn Sie einen Webdienst debuggen, der vom Internet aus verfügbar ist.Be especially careful if you are debugging a Web service that is exposed on the Internet.

Externe KomponentenExternal Components

Beachten Sie den Vertrauenswürdigkeitsstatus externer Komponenten, mit denen das Programm interagiert. Dies ist besonders wichtig, wenn Sie den Code nicht selbst geschrieben haben.Be aware of the trust status of external components that your program interacts with, especially if you did not write the code. Beachten Sie dabei auch die Komponenten, die Visual StudioVisual Studio oder der Debugger möglicherweise verwenden.Also be aware of components that Visual StudioVisual Studio or the debugger might use.

Symbole und QuellcodeSymbols and Source Code

Die folgenden beiden Visual StudioVisual Studio -Tools erfordern ebenfalls einige Überlegungen zur Sicherheit:Two Visual StudioVisual Studio tools that require thinking about security are the following:

Siehe auchSee Also