2

Jedes Mal, wenn man will, ein Verfahren von Visual Studio befestigen, so erhält man diese böse Nachricht:Wie genau kann ein debugged Prozess den Debugging-Prozess (Maschine) gefährden?

Attach security warning

Diese question and its answers zeigt den Kampf um es loszuwerden. Diese Microsoft article sagen uns über die möglichen Gefahren für die Debugging-Prozess/Maschine des Anbringens:

jedoch viele Entwickler nicht erkennen, dass die Bedrohung der Sicherheit kann auch in der entgegengesetzten Richtung fließen. Es ist möglich, dass bösartiger Code in der Debuggee Prozess die Sicherheit des Debuggens Maschine gefährden: Es gibt eine Reihe von Sicherheits-Exploits, die gegen geschützt werden müssen.

Frage: wie funktioniert der Prozess gedebuggt Lage ist, den Debug-Prozess zu nutzen? (Ich interessiere mich nur für ein paar Highlights, da ich mir vorstelle, dass man darüber ein Buch schreiben kann).

Und auch, was ist der Zweck dieser Warnung beim Debuggen auf w3wp.exe lokalen Rechner (ich stelle mir vor, dass die überwiegende Mehrheit der Debugging-Sitzungen innerhalb der Entwicklungsmaschine passieren). Wenn der w3wp-Prozess des lokalen Computers kompromittiert wird, sind Sie ohnehin in großen Schwierigkeiten.

+1

Dieses Dokument hat mögliche Gründe mitgeteilt, warum es diese Warnung beim Debugging auf dem lokalen w3wp.exe-Prozess gibt: http: //developers.de/blogs/damir_dobric/archive/2009/11/13/attach-debugger-security-warning.aspx. Beispielsweise wird es angezeigt, wenn der Anhängungsprozess, der den Dienst hostet, von Benutzer gehostet wird, der über keine Debugging-Berechtigungen verfügt. –

+0

Haben Sie Folgendes gesehen: https://security.stackexchange.com/questions/127681/how-attaching-to-a-process-with-a-debugger-can-compromise-systems- security? –

+0

@SimonMourier - Ich habe einen ähnlichen MSDN Artikel gelesen, aber die Informationen sind ziemlich allgemein. Ich war an einigen technischen Details interessiert, wie der Debuggee-Prozess die Debugger-Prozesse gefährden kann. Ich denke, es wäre interessant, ein paar Dinge über dieses Thema zu wissen. – Alexei

Antwort

2

Sie erhalten diese Warnung, wenn Sie an einen Prozess anfügen, der mit einem eingeschränkten Benutzerkonto ausgeführt wird. Wie w3wp.exe ist ein Webserver normalerweise mit einem solchen Account konfiguriert, sodass ein Angreifer nicht zu viel Schaden anrichten kann, nachdem er herausgefunden hat, wie er den Webserver gefährden kann. Beachten Sie, wie Sie normalerweise ein Konto mit Administratorrechten verwenden, um den Webserver zu debuggen.

Dies öffnet eine generische Sicherheitslücke, die der eines "Splitterangriffs" sehr ähnlich ist. Eine Privilegien-Eskalation, der privilegierte Prozess, der die Privilegien eines anderen Prozesses ausnutzt. Der Conduit ist der Debugger-Transport, der Kanal, über den ein Debugger das Debuggee steuern kann. Ich denke ein Socket in dem Fall, wo der Prozess auf einem anderen Rechner läuft, ein Named Pipe, wenn er auf demselben Rechner läuft. Der kompromittierte Prozess könnte die Nachrichten fälschen, die der Debugger als normale Antworten interpretiert. Alles ist möglich, nichts ist einfach, nichts davon ist dokumentiert. Absichtlich.

Beachten Sie, wie Sie weiterhin den Remote-Debugger verwenden, wenn w3wp.exe lokal ausgeführt wird.Es ist normalerweise ein 64-Bit-Prozess und VS ist 32-Bit, der Remote-Debugger (msvsmon.exe) wird benötigt, um die Bissendifferenz zu überbrücken.

Es ist die Art von Angriffsszenario, bei der Microsoft seine Hände hochwerfen muss und nicht mehr garantieren kann, dass ein solcher Angriff nicht erfolgreich sein kann und Ihrem Rechner echten Schaden zufügt. Die Angriffsfläche ist zu groß. Damit sie den Dialog anzeigen, müssen Sie ihn als "wir sind nicht länger haftbar für das, was als nächstes passiert" interpretieren. Plausible Abstreitbarkeit, wenn es jemals zu einer Klage kommt. Die angezeigten Informationen sind nicht wirklich nützlich, um zu beurteilen, ob der Prozess kompromittiert ist, aber es ist alles, was sie haben. Das Leben ist zu kurz, um sich darum zu kümmern, jedes Mal, wenn Sie Attach anklicken, haben Anwälte die Arbeit eines Programmierers nie einfacher gemacht.

+0

Also, wenn ich richtig verstehe, auch wenn ich einen verwalteten Prozess debuggen, das eigentliche Debugging findet in einer nicht verwalteten Art und Weise statt, nicht wahr? – Alexei

+0

Sicher, es wird nichts über einen Debugger verwaltet. ICorDebug ist die zentrale Debugger-Schnittstelle, die zum Debuggen eines verwalteten Prozesses verwendet wird. Es handelt sich um reinen nativen Code. –

2

Wenn Sie etwas im Debuggee ausführen, führen Sie effektiv Code auf dem Debugger aus. Hier könnte das potenzielle Sicherheitsproblem liegen.

Angenommen, das Debuggee hat einige Typen, die ein natvis in den Debugger laden. Angenommen, der C++ Expression Evaluator hat eine Sicherheitslücke, die einen Pufferüberlauf-Angriff durch ein natvis ermöglicht. Nur durch das Debuggen eines bestimmten Prozesses kann der Remote-Prozess die Kontrolle über Ihren lokalen Computer übernehmen. Zugegeben, das ist nicht wahrscheinlich, aber der Debugger ist nicht gegen diese Art von Angriffen gehärtet. Die Art des Debuggens bedeutet, dass Sie Code ausführen lassen müssen.

In der anderen Richtung, sobald ein Prozess debuggt wird, haben die Debugger die gleichen Berechtigungen wie sie es tun. Du kannst alles tun, was du willst.

Diese Warnung erscheint beim Anhängen an den Prozess eines unbekannten Benutzers. Siehe diesen Artikel: https://msdn.microsoft.com/ro-ro/library/ms241736.aspx

Verwandte Themen