Bei Microsoft anmelden
Melden Sie sich an, oder erstellen Sie ein Konto.
Hallo,
Wählen Sie ein anderes Konto aus.
Sie haben mehrere Konten.
Wählen Sie das Konto aus, mit dem Sie sich anmelden möchten.

Zusammenfassung

Es besteht eine Sicherheitsanfälligkeit für die Offenlegung von Informationen in dem in der Verschlüsselungskomponente von Microsoft .NET Framework implementierten TLS/SSL-Protokoll (Transport Layer Security, Secure Sockets Layer). Ein Angreifer, der diese Sicherheitsanfälligkeit erfolgreich ausnutzt, kann den verschlüsselten TLS-SSL-Datenverkehr entschlüsseln.

Um die Sicherheitsanfälligkeit ausnutzen zu können, müsste der Angreifer zunächst unverschlüsselte Daten in den sicheren Kanal einschleusen und dann einen Man-in-the-Middle-Angriff zwischen dem Zielclient und einem legitimen Server ausführen. Dieses Update behebt die Sicherheitsanfälligkeit, indem die Art und Weise geändert wird, wie die .NET-Verschlüsselungskomponente verschlüsselte Netzwerkpakete sendet und empfängt.

Diese Sicherheitsanfälligkeit wird im Rahmen von Microsoft-Sicherheitsbulletin MS16-065 behoben. Dieses Update ändert die Art und Weise, wie die .NET-Verschlüsselungskomponente verschlüsselte Netzwerkpakete sendet und empfängt.

Die folgende Tabelle enthält Links zum Standardeintrag für jede Sicherheitsanfälligkeit in der Liste allgemeiner Sicherheitsanfälligkeiten:

Titel der Sicherheitsanfälligkeit

CVE-Nummer

Öffentlich gemeldet

Ausgenutzt

TLS/SSL-Sicherheitsanfälligkeit durch Spoofing

CVE-2016-0149

Ja

Nein

Behebung der Anfälligkeit

Die in Microsoft-Sicherheitsbulletin MS16-065 eingeführte Änderung bewirkt, dass der erste TLS-Datensatz nach dem Handshake aufgeteilt wird. Dadurch geben die Streams SslStream, WebRequest (HttpWebRequest, FtpWebRequest), SmtpClient und HttpClient (sofern auf HttpWebRequest basierend) ein einzelnes Byte für den ersten Lesevorgang zurück und unmittelbar danach in nachfolgenden Lesevorgängen die restlichen (n-1) Bytes. Diese Verhaltensänderung betrifft nur Anwendungen, die TLS 1.0 und CBC (Cipher Block Chaining) und nicht TLS 1.1 oder TLS 1.2. verwenden.

Hinweis Als Voraussetzung für dieses Update müssen Sie Microsoft-Sicherheitsbulletin MS12-006 installieren.

Diese Änderung kann dazu führen, dass manche auf .NET Framework basierende Anwendungen nicht mehr funktionieren. In diesem Artikel werden zwei Methoden beschrieben, mit denen Sie Ihre Anwendung aktualisieren können, damit sie nach der Installation von Microsoft-Sicherheitsbulletin MS16-065 ordnungsgemäß funktioniert.

Gegenmaßnahmen bei Kompatibilitätsproblemen

Option 1: Wechseln zum TLS 1.2-Protokoll

Beim Einsatz dieser Option wird die Anwendung durch Ändern der Registrierung oder programmgesteuertes Konfigurieren der Protokollversion gezwungen, das Protokoll TLS 1.2 zu verwenden.

  • Ändern der Registrierung

    Wichtig
    Führen Sie die in diesem Abschnitt beschriebenen Schritte sorgfältig aus. Durch eine fehlerhafte Bearbeitung der Registrierung können schwerwiegende Probleme verursacht werden. Bevor Sie Änderungen vornehmen, sichern Sie die Registrierung, um sie wiederherstellen zu können, falls Probleme auftreten.

    Bei den .NET Framework 4.0- und .NET Framework 4.5.x-Anwendungen, die unter .NET Framework 4.5 und höheren Versionen ausgeführt werden, kann das Standardprotokoll durch die Aktivierung des Registrierungsschlüssels SchUseStrongCrypto auf TLS 1.2, TLS 1.1 und TLS 1.0 festgelegt werden. Dieser Registrierungsschlüssel wird im Abschnitt Empfohlene Maßnahmen der Microsoft-Sicherheitsempfehlung 2960358 auf der Microsoft TechNet-Website besprochen.

    Wichtig Diese Registrierungsänderung funktioniert nur, wenn die folgenden Bedingungen erfüllt sind:

    • Anwendungen, die ServicePointManager-basierte APIs verwenden, legen den Wert ServicePointManager.SecurityProtocolnicht explizit fest. Beispiele für solche Klassen sind System.Net.Http.HttpClient, System.Net.FtpWebRequest, System.Net.HttpWebRequest und System.Net.Mail.SmtpClient. Die Festlegung von ServicePointManager.SecurityProtocol im Code hat Vorrang gegenüber der Registrierung.

    • Die Anwendungen verwenden die SslStream.AuthenticateAsClient(String)-Überladung.


  • Programmgesteuertes Konfigurieren der Protokollversion

    Die .NET Framework 4.0- und 4.5-Anwendungen, die unter .NET Framework 4.5 und höheren Versionen ausgeführt werden und die SslStream.AuthenticateAsClient(String, X509CertificateCollection, SslProtocols, Boolean)-Überladung verwenden, müssen SslProtocols.Tls12, SslProtocols.Tls11 und SslProtocols.Tls als dritten Parameter angeben. Eine umfassende Beschreibung der Verwendung der SslStream-Klasse finden Sie im Thema SslStream-Klasse auf der Microsoft Developer (MSDN)-Website.

    Hinweis In .NET Framework 4.6 und höheren Versionen werden TLS 1.2, TLS 1.1 und TLS 1.0 als Standardprotokolle verwendet. Dies wird in der Microsoft-Sicherheitsempfehlung 2960358 auf der Microsoft TechNet-Website erläutert.


Option 2: Verarbeiten geteilter Pakete

Dieses Update bewirkt, dass ein Datensatz in mehrere Datensätze aufgeteilt wird. Dies kann zu Anwendungsfehlern führen, wenn eine Anwendung erwartet, dass der gesamte Datensatz in einem Read-Aufruf vorliegt. Um ein ordnungsgemäßes Anwendungsverhalten sicherzustellen, prüfen Sie, ob die Anwendung aufgeteilte Pakete verarbeitet. Dazu muss der Stream.Read-Aufruf richtig ausgeführt werden. Sie können sich an dem hier verfügbaren Beispielcode orientieren, wenn Sie die Anwendung korrigieren müssen, damit der Read-Aufruf ordnungsgemäß ausgeführt wird.

Eine HTTP-Beispielanforderung, welche die Änderung des Verhaltens vor (mit Gegenmaßnahme) und nach (ohne Gegenmaßnahme) der Installation der Updates 3147461 und 3147458 zeigt, finden Sie im Abschnitt „Weitere Informationen“.

Ein komplettes Beispiel der Stream.Read-Methode finden Sie im Thema Stream.Read Method (Byte[], Int32, Int32) auf der Microsoft Developer (MSDN)-Website.

Problemumgehungen für Anwendungskompatibilitätsprobleme

Warnung Durch diese Problemumgehungen wird ein Computer oder Netzwerk möglicherweise anfälliger für Angriffe böswilliger Benutzer oder Schadsoftware, wie etwa Viren. Diese Problemumgehungen werden von Microsoft nicht empfohlen, sie werden jedoch hier aufgeführt, damit Sie sie nach eigenem Ermessen anwenden können. Die Verwendung dieser Problemumgehungen erfolgt auf eigene Verantwortung.

Methode 1: Aktualisieren von Registrierungsschlüsseln (bei allen Versionen von .NET Framework verfügbar)

Deaktivieren der Struktur SCH_SEND_AUX_RECORD (global)

Deaktivieren der Struktur SCH_SEND_AUX_RECORD für einzelne Anwendungen

Deaktivieren der Struktur SCH_SEND_AUX_RECORD (global)

Fügen Sie für alle Anwendungen den folgenden Registrierungsunterschlüssel hinzu:

Registrierungspfad:HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\<version_number>
DWORD-Name: SchSendAuxRecord
Wert: 0
Hinweis Abhängig von der verwendeten Version steht der Platzhalter <version_number> für v4.0.30319 oder v2.0.50727.

Für 32-Bit-Anwendungen, die auf 64-Bit-Computern ausgeführt werden, fügen Sie außerdem den folgenden Registrierungsunterschlüssel hinzu:

Registrierungspfad:HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\.NETFramework\<version_number>
DWORD-Name: SchSendAuxRecord
Wert: 0
Hinweis Abhängig von der verwendeten Version steht der Platzhalter <version_number> für v4.0.30319 oder v2.0.50727.

Problemumgehung

Um den in diesem Artikel beschriebenen Sicherheitsmodus zeitweilig zu deaktivieren, klicken Sie auf den entsprechenden Link zum Herunterladen der REG-Datei, und anschließend doppelklicken Sie auf die heruntergeladene Datei, um die Registrierungsänderungen vorzunehmen.

Anwendungen für Microsoft .NET Framework 3.5:

Download Die Datei „ManualOptOutSchSendAuxRecord20.reg“ jetzt herunterladen.
Anwendungen für Microsoft .NET Framework 4.0 und höhere Versionen:

Download Die Datei „ManualOptOutSchSendAuxRecord40.reg“ jetzt herunterladen.
Um den in diesem Artikel beschriebenen Sicherheitsmodus erneut zu aktivieren, klicken Sie auf den entsprechenden Link zum Herunterladen der REG-Datei, und anschließend doppelklicken Sie auf die heruntergeladene Datei, um die Registrierungsänderungen vorzunehmen.

Anwendungen für Microsoft .NET Framework 3.5:

Download Die Datei „ManualOptInSchSendAuxRecord20.reg“ jetzt herunterladen.
Anwendungen für Microsoft .NET Framework 4.0 und höhere Versionen:

Download Die Datei „ManualOptInSchSendAuxRecord40.reg“ jetzt herunterladen.
Weitere Informationen zum Herunterladen von Microsoft Support-Dateien finden Sie im folgenden Artikel der Microsoft Knowledge Base:

119591 So erhalten Sie Microsoft Support-Dateien im Internet Microsoft hat diese Datei auf Viren überprüft. Dazu wurde die neueste Software zur Virenerkennung verwendet, die zum Zeitpunkt der Bereitstellung verfügbar war. Die Datei befindet sich auf Servern mit verstärkter Sicherheit. Auf diese Weise werden nicht autorisierte Änderungen an der Datei weitestgehend verhindert.


Deaktivieren der Struktur SCH_SEND_AUX_RECORD für einzelne Anwendungen

Fügen Sie für alle Anwendungen den folgenden Registrierungsunterschlüssel hinzu:

Registrierungspfad:HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\<version_number>\System.Net.ServicePointManager.SchSendAuxRecord
DWORD-Name: Vollqualifizierter Pfad der EXE-Datei der Anwendung (z. B. C:\MeineApp\MeineApp.exe)
Wert: 0
Hinweis Abhängig von der verwendeten Version steht der Platzhalter <version_number> für v4.0.30319 oder v2.0.50727.

Für 32-Bit-Anwendungen, die auf 64-Bit-Computern ausgeführt werden, fügen Sie außerdem den folgenden Registrierungsunterschlüssel hinzu:

Registrierungspfad:HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\.NETFramework\<version_number>\System.Net.ServicePointManager.SchSendAuxRecord
DWORD-Name: Vollqualifizierter Pfad der EXE-Datei der Anwendung (z. B. C:\MeineApp\MeineApp.exe)
Wert: 0 (Gültig ist nur der Wert 0. Alle anderen Werte werden ignoriert.)
Hinweis Abhängig von der verwendeten Version steht der Platzhalter <version_number> für v4.0.30319 oder v2.0.50727.

Methode 2: Ändern der Konfiguration auf der Anwendungsebene (nur bei .NET Framework Version 4.6 und höheren Versionen verfügbar)

Ab .NET Framework 4.6 können Sie die Konfiguration auf Anwendungsebene durch Code oder die Anwendungskonfiguration oder Registrierungsänderungen ändern.

In .NET Framework 4.6 können Sie die Konfigurationsoption mit einer der folgenden Methoden festlegen. In diesen Beispielen wird das Sicherheitsfeature deaktiviert.

  • Programmgesteuert

    Zunächst sollte die Anwendung den folgenden Code ausführen, weil der Dienststellen-Manager nur einmal initialisiert wird.

    private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; 
    private const string DontEnableSchSendAuxRecordName = @"Switch.System.Net.DontEnableSchSendAuxRecord";
    AppContext.SetSwitch(DisableCachingName, true);
    AppContext.SetSwitch(DontEnableSchSendAuxRecordName , true);
  • Anwendungskonfiguration

    Um die Anwendungskonfiguration zu ändern, fügen Sie den folgenden Eintrag hinzu:

    <runtime>
    <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchSendAuxRecord=true"/>
    </runtime>
  • Registrierungsschlüssel (Computer global)

    Registrierungspfade:HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AppContextHKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\AppContext
    Wert: Switch.System.Net.DontEnableSchSendAuxRecord
    Typ: String
    Wert: True

    Hinweis Für alle Anwendungen gilt: Switch.System.Net.DontEnableSchSendAuxRecord = False.

Weitere Informationen

Es folgt ein Beispiel für ein Client-/Server-Kommunikationsmuster vor und nach der Installation dieses Updates. Die hier bereitgestellten Informationen sollen es erleichtern, durch die Installation dieses Updates verursachte Anwendungsfehler zu erkennen.

Ohne Gegenmaßnahme

Mit Gegenmaßnahme

[Server] Auf Verbindungen warten (127.0.0.1:4431)
[Client] Verbinden mit localhost:4431
[Server] Client ist verbunden.
[Client] Verbunden. Authentifizieren...
[Server] Client ist authentifiziert.
[Client] Anforderung senden (94 Bytes)
[Client] Auf Antwort warten…

[Server] 94 Bytes empfangen: <<<GET / HTTP/1.0
Host: contoso.com
Benutzeragent: Anwendung testen

>>>
[Server] Antwortet mit 476 Bytes gesendet.

[Client 1: 476 Bytes] Antwort: <<<<<HTTP/1.1 200 OK

>>>>>

[Server] Auf Verbindungen warten (127.0.0.1:4431)
[Client] Verbinden mit localhost:4431
[Server] Client ist verbunden.
[Client] Verbunden. Authentifizieren...
[Server] Client ist authentifiziert.
[Client] Anforderung senden (94 Bytes)
[Client] Auf Antwort warten...
[Server] 1 Bytes empfangen: <<<G>>>
[Server] 93 Bytes empfangen: <<<ET / HTTP/1.0
Host: contoso.com
Benutzeragent: Anwendung testen

>>>
[Server] Antwortet mit 476 Bytes gesendet.
[Client 1: 1 Bytes] Antwort: <<<<<H>>>>>
[Client 2: 475 Bytes] Antwort: <<<<<TTP/1.1 200 OK

>>>>>


Benötigen Sie weitere Hilfe?

Möchten Sie weitere Optionen?

Erkunden Sie die Abonnementvorteile, durchsuchen Sie Trainingskurse, erfahren Sie, wie Sie Ihr Gerät schützen und vieles mehr.

In den Communities können Sie Fragen stellen und beantworten, Feedback geben und von Experten mit umfassendem Wissen hören.

War diese Information hilfreich?

Wie zufrieden sind Sie mit der Sprachqualität?
Was hat Ihre Erfahrung beeinflusst?
Wenn Sie auf "Absenden" klicken, wird Ihr Feedback zur Verbesserung von Produkten und Diensten von Microsoft verwendet. Ihr IT-Administrator kann diese Daten sammeln. Datenschutzbestimmungen.

Vielen Dank für Ihr Feedback!

×