2012-08-03 8 views
14

Ich würde gerne wissen, ob NetNamedPipeBinding sicher gilt:ist NetNamedPipeBinding sicher?

Auf der einen Seite NetNamedPipeBinding Sicherheit auf der Transportschicht nur implementiert und verwendet NTLM (source), die von Microsoft nicht mehr empfohlen wird (source)

On andererseits ist das Named Pipie nicht von einem entfernten Computer aus zugänglich, und es gibt keine Möglichkeit, eine bestimmte Open Pipe-Instanz abzuhören, die zum Übertragen von Daten verwendet wird, oder Schreiben von Daten an sie, es sei denn, man kann das Handle für die betreffende spezifische Instanz erhalten .

Dies ist der Grund, warum ich nicht weiß, was ich über die Sicherheit dieser Lösung denken soll.

Antwort

31

Sie stellen nicht wirklich die richtige Frage: Es ist nicht möglich, eine boolesche Antwort unter allen Umständen zu geben. Sie sollten immer die Sicherheit einer Lösung als Ganzes bewerten, Bedrohungen identifizieren und die damit verbundenen Sicherheitsrisiken modellieren.

Das heißt, es ist wahr, dass die WCF NetNamedPipeBinding hat Sicherheitsmerkmale aufweisen, die von Bindungen basierend auf Netzwerkprotokolle es etwas anders macht:

  • Im Vergleich zu jedem Netzwerkprotokoll, das NetNamedPipeBinding ist von Natur aus wesentlich sicherer gegen Bedrohungen für die Kommunikation über die Transportverbindung. Anstatt Bytes über ein Netzwerk zu übertragen, werden im Fall von Named Pipes die Nachrichten über einen Mechanismus ausgetauscht, der das Übermitteln von Datenbytes (über Betriebssystem-APIs) an und von dem vom Betriebssystemkern auf einem einzelnen Computer verwalteten Speicher umfasst. Der Nachrichtenstrom kann nur von einem Angreifer belauscht werden, der bereits privilegierten Code im Kernel-Modus ausgeführt hat (und wenn Sie einen solchen Angreifer bereits im Knickers Ihres Betriebssystems haben, kann er wahrscheinlich mit Ihrem Bewerbungsprozess alles tun, was er will)). Folglich die WCF "Transportsicherheit" is more or less irrelevant to the security of the message stream and should arguably often be disabled in configuration to avoid unnecessary runtime overhead.
  • Der Mechanismus, der von der Named Pipe-Bindung verwendet wird, um Dienstendpunkte zu potenziellen Clients zu veröffentlichen, ist von Natur aus sicherer als netzwerkbasierte Protokolle: Er basiert auf einem benannten Shared Memory-Objekt und ist daher von keinem Remotecomputer aus zugänglich.
  • Die benannte Pipe, die für den Nachrichtenaustausch verwendet wird, wird mit einer GUID benannt, die sich jedes Mal ändert, wenn der Server neu gestartet wird. Außerdem ist sie durch eine ACL geschützt, die verhindert, dass ein entfernter Benutzer sie öffnet, selbst wenn sie die aktuelle GUID von der Name der Pipe

Auf der anderen Seite, auf einem Betriebssystem-Anlage über eine API zugegriffen basiert, statt auf öffentlichen Standards für die Netzwerkkommunikation, gibt es einige spezifische Sicherheitslücken sind, die für netzwerkbasierte Bindungen entstehen nicht:

  • Server "Kniebeugen" -Angriffe, bei denen andere Prozesse als der beabsichtigte WCF-Service-Host erfolgreich die Named Pipe abhören können. Die Named Pipe-Bindung in .NET 3.5 und früheren Versionen war aufgrund eines Fehlers in der ACL, die durch die Bindung zum Sichern der Pipe erstellt wurde, nicht sicher gegen diese Sicherheitsanfälligkeit. .NET 4 hat diesen Fehler meist behoben.
  • Named Pipes unter Windows verfügen über einen eingebauten Mechanismus, um Named Pipe-Server zu unterstützen, die sich als Clients ausgeben. WCF NetNamedPipeBinding enthält einen Fehler, der in einigen Szenarios den Pipe-Server (d. H. Den WCF-Dienst) dazu berechtigt, die Windows-Anmeldeinformationen des Clients für einen solchen Identitätswechsel zu verwenden, auch wenn die clientseitige WCF-Bindung den Identitätswechsel nicht zulässt.
  • Zusammenfassend müssen Sie die Gesamtsicherheit Ihrer Anwendung/Ihres Systems im Hinblick auf die Bedrohungen, die für Sie von Bedeutung sind, unter Berücksichtigung der besonderen Eigenschaften der verschiedenen Bindungen, die Sie in Betracht ziehen, beurteilen. Die NetNamedPipeBinding-Methode ist häufig die beste Wahl für Szenarios mit derselben Maschine.

    +0

    Vielen Dank für Ihre sehr vollständige Antwort, das ist genau das, was ich erwartet habe: keine binäre Antwort, sondern eine Übersicht über die Stärken und Schwächen von NetNamedPipeBinding! – darkheir