Debuggersicherheit

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. Ein bösartiger Debugger könnte sich diese Möglichkeiten zunutze machen und auf dem zu debuggenden Computer schwere Schäden verursachen. Deshalb existieren Beschränkungen hinsichtlich der zum Debuggen berechtigten Benutzer. Weitere Informationen finden Sie unter Remotedebuggen – Berechtigungen.

Viele Entwickler sind sich jedoch der Tatsache nicht bewusst, dass die Sicherheit auch in entgegengesetzter Richtung bedroht werden kann. 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.

Empfohlene Vorgehensweisen bezüglich der Sicherheit

Zwischen dem Debugger und dem zu debuggenden Code besteht ein implizites Vertrauensverhältnis. Sie sollten ein Codefragment nur debuggen, wenn Sie auch bereit wären, es auszuführen. Die Grundfrage besteht darin, ob Sie dem zu debuggenden Code vertrauen können. 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.

Um möglichst wenig Angriffsfläche zu bieten, sollte das Debuggen auf Produktionscomputern deaktiviert werden. Aus demselben Grund sollte das Debuggen niemals für unbegrenzte Zeit aktiviert werden.

Sicherheit bei verwaltetem Debuggen

Im Folgenden finden Sie allgemeine Empfehlungen für das verwaltete Debuggen.

  • Seien Sie vorsichtig, wenn Sie den Debugger an einen Prozess anhängen, der einem nicht vertrauenswürdigen Benutzer gehört: Das Anhängen ist mit der impliziten Annahme verbunden, dass der Prozess vertrauenswürdig ist. Wenn Sie versuchen, den Debugger an einen Prozess eines nicht vertrauenswürdigen Benutzers anzuhängen, wird ein Dialogfeld mit einer Sicherheitswarnung angezeigt, das Sie dazu auffordert, das Anhängen an den Prozess zu bestätigen. " Vertrauenswürdige Benutzer" schließen Sie selbst und eine Reihe von Standardbenutzern ein, die üblicherweise auf Computern definiert sind, auf denen .NET Framework installiert ist, z. B. aspnet, localsystem, networkservice und localservice. Weitere Informationen finden Sie unter 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.

  • Seien Sie vorsichtig, wenn Sie ein Projekt aus dem Internet herunterladen und in Visual Studio laden. Dies ist auch ohne Debuggen sehr riskant. Indem Sie dies tun, gehen Sie davon aus, dass das Projekt und der darin enthaltene Code vertrauenswürdig sind.

Weitere Informationen finden Sie unter Debuggen von verwaltetem Code.

Sicherheit beim Remotedebuggen

Lokales Debuggen ist im Allgemeinen sicherer als Remotedebuggen. Beim Remotedebuggen wird eine wesentlich größere Angriffsfläche geboten, die ausgenutzt werden könnte.

Beim Remotedebuggen wird der Visual Studio-Remotedebugmonitor (msvsmon.exe) verwendet, bei dessen Konfiguration verschiedene Sicherheitsempfehlungen beachtet werden sollten. Der bevorzugte Authentifizierungsmodus ist die Windows-Authentifizierung, da der Modus Keine Authentifizierung ein Sicherheitsrisiko darstellt. Wenn Sie den Modus Windows-Authentifizierung verwenden, bedenken Sie, dass es gefährlich ist, einem nicht vertrauenswürdigen Benutzer die Verwendung von msvsmon zu gestatten. Dies wird Ihnen auch in einer entsprechenden Sicherheitswarnung mitgeteilt.

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. 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.

Weitere Informationen finden Sie unter Remotedebuggen – Setup.

Sicherheit beim Debuggen von Webdiensten

Lokales Debuggen ist sicherer, aber häufig nicht durchführbar, da Visual Studio wahrscheinlich nicht auf dem Webserver installiert ist. 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. Im Folgenden finden Sie einige zusätzlich empfohlene Vorgehensweisen. Weitere Informationen finden Sie unter Debugging XML Web Services.

  • Aktivieren Sie das Debuggen nicht auf einem Webserver, dessen Sicherheit gefährdet ist.

  • Überprüfen Sie vor dem Debuggen die Sicherheit des Webservers. Debuggen Sie ihn nicht, wenn Sie nicht von seiner Sicherheit überzeugt sind.

  • Seien Sie besonders vorsichtig, wenn Sie einen Webdienst debuggen, der vom Internet aus verfügbar ist.

Externe Komponenten

Beachten Sie den Vertrauenswürdigkeitsstatus externer Komponenten, mit denen das Programm interagiert. Dies ist besonders wichtig, wenn Sie den Code nicht selbst geschrieben haben. Beachten Sie dabei auch die Komponenten, die Visual Studio oder der Debugger möglicherweise verwenden.

Symbole und Quellcode

Die folgenden beiden Visual Studio-Tools erfordern ebenfalls einige Überlegungen zur Sicherheit:

Siehe auch

Referenz

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

Security Warning: Debugger Must Execute Untrusted Command

Weitere Ressourcen

Einstellungen und Vorbereitung für das Debuggen

Debuggerwegweiser