MS16-065: Beschrijving van de TLS/SSL protocol beveiligingslek (CVE-2016 0149): 10 mei 2016

BELANGRIJK: Dit artikel is vertaald door middel van automatische vertalingssoftware van Microsoft en is mogelijk nabewerkt door de Microsoft Community via CTF-technologie (Community Translation Framework) of door een menselijke vertaler. Microsoft biedt zowel automatisch vertaalde, door mensen vertaalde en door de community nabewerkte artikelen aan, zodat er in meerdere talen toegang is tot alle artikelen in onze Knowledge Base. Een vertaald of bewerkt artikel kan fouten bevatten in vocabulaire, syntaxis of grammatica.. Microsoft is niet verantwoordelijk voor eventuele onjuistheden, fouten of schade ten gevolge van een foute vertaling van de inhoud van een bericht of het gebruik van deze vertaalde berichten door onze klanten.

De Engelstalige versie van dit artikel is de volgende: 3155464
Samenvatting
Een beveiligingslek bestaat in het protocol Transport Layer Security en Secure Sockets Layer protocol TLS/SSL (), zoals geïmplementeerd in het onderdeel codering van Microsoft .NET Framework. Een aanvaller die misbruik weet te maken van dit beveiligingslek kan versleutelde TLS/SSL-verkeer te ontsleutelen.

Om dit beveiligingslek misbruiken door zou een aanvaller eerst moeten niet-gecodeerde gegevens invoeren in het beveiligingskanaal en voer daarna een aanval man-in-the-middle (MiTM) tussen de desbetreffende client en een betrouwbare server. Deze update dicht het beveiligingslek door aanpassing van de manier waarop het onderdeel .NET codering verzendt en ontvangt de gecodeerde pakketten.

Dit beveiligingslek wordt opgelost als onderdeel van Microsoft-beveiligingsbulletin MS16-065. Deze update wijzigt de manier waarop het onderdeel .NET Framework codering verzendt en ontvangt de gecodeerde pakketten.

De volgende tabel bevat koppelingen naar de standaardvermelding voor elke door een beveiligingslek in de lijst met veelvoorkomende beveiligingslekken en blootstellingen.

Beveiligingslek met betrekking tot titelCVE-nummerOpenbaar gemaaktMisbruik
TLS/SSL Spoofing-beveiligingslekCVE-2016-0149JaNee

Beveiligingslek met betrekking tot resolutie

De wijziging in Microsoft-beveiligingsbulletin MS16-065 wordt de eerste TLS record nadat het handshake te splitsen. Dit zorgt ervoor dat de SslStream, WebRequest (HttpWebRequest, FtpWebRequest), SmtpClient en HttpClient (indien op basis van het HttpWebRequest) gegevensstromen naar één byte terug voor de eerste lezen, gevolgd door de rest (n-1) bytes in opeenvolgende gelezen. Dit gedrag alleen gewijzigd voor toepassingen die gebruikmaken van TLS 1.0 + Cipher Block Chaining, maar niet bij gebruik van TLS 1.1 of TLS 1.2.

Opmerking Als een vereiste is, moet u installeren Microsoft-beveiligingsbulletin MS12-006 Deze update inschakelen.

Deze wijziging kan veroorzaken sommige toepassingen die zijn gebaseerd op .NET Framework worden afgebroken. Dit artikel wordt beschreven dat u gebruiken kunt voor het bijwerken van uw toepassing correct werkt nadat u op twee manieren Microsoft-beveiligingsbulletin MS16-065.

Beperkende factoren voor compatibiliteitsproblemen

Optie 1: Ga naar het protocol TLS 1.2

Deze optie wordt de toepassing het protocol TLS 1.2 wordt gebruikt door het register of programmatisch versie van het protocol te configureren.
  • Het register wijzigen

    Belangrijk Volg de stappen in deze sectie zorgvuldig. Als u het register onjuist bewerkt, kunnen er ernstige problemen optreden. Voordat u deze wijzigt, back-up van het register terugzetten voor het geval er zich problemen voordoen.

    Het .NET Framework 4.0 en de .NET Framework 4.5.x toepassingen die worden uitgevoerd op .NET Framework 4.5 en hoger kunnen activeren het standaardprotocol TLS 1.2, TLS 1.1 en TLS 1.0 door het inschakelen van de registersleutel SchUseStrongCrypto . Deze registersleutel wordt beschreven in de sectie van de Voorgestelde acties van de Microsoft Security Advisory-2960358 het onderwerp op de Microsoft TechNet-website.

    Belangrijk Deze registerwijziging werkt alleen als de volgende voorwaarden voldaan wordt:
    • Toepassingen die gebruikmaken van API's ServicePointManager zijn geen instelling van de ServicePointManager.SecurityProtocol de waarde die expliciet. Voorbeelden van deze klassen zijn System.Net.Http.HttpClient, System.Net.FtpWebRequest, System.Net.HttpWebRequesten System.Net.Mail.SmtpClient. De ServicePointManager.SecurityProtocol instellen in code voorrang op het register.
    • Toepassingen maken gebruik van de SslStream AuthenticateAsClient(String) overbelasting.

  • Via programmacode de protocolversie configureren

    Het .NET Framework 4.0 en 4.5 toepassingen die op het .NET Framework 4.5 en hoger worden uitgevoerd en die gebruikmaken van de SslStream AuthenticateAsClient(String,X509CertificateCollection,SslProtocols,Boolean) overbelasting moet worden gecompileerd, SslProtocols.Tls12, SslProtocols.Tls11en SslProtocols.Tls als de derde parameter opgeven. Zie voor een volledige beschrijving van het gebruik van de klasse SslStream, de SslStream, klasse het onderwerp op de website van MSDN (Microsoft Developer).

    Opmerking Het .NET Framework 4.6 en hoger gebruiken TLS 1.2, TLS 1.1 en TLS 1.0 als de standaard protocol. Dit wordt besproken in de Microsoft Security Advisory-2960358 het onderwerp op de Microsoft TechNet-website.

Optie 2: Ingang splitsen pakketten

Deze update zorgt ervoor dat een enkele record te splitsen in meerdere records. Dus als een toepassing de volledige record verwacht beschikbaar in één aanroep lezen , dergelijke toepassingen mogelijk worden verbroken. Om ervoor te zorgen dat de toepassing goed werkt, controleert u of dat de toepassing gesplitste pakketten verwerkt door het aanroepen van Stream.Read correct uit te voeren. U kunt de voorbeeldcode beschikbaar Hier Bel als referentie voor het oplossen van de toepassing uit te voeren correct lezen .

Voor een voorbeeld HTTP-verzoek waarin het verschil in situatie vóór (met de beperking) en na (zonder de beperking) updates 3147461 en 3147458 zijn geïnstalleerd, raadpleegt u de sectie 'Meer informatie'.

Zie voor een volledig voorbeeld van de methode Stream.Read de Stream.Read, methode (Byte[],Int32,Int32) het onderwerp op de website van MSDN (Microsoft Developer).

Tijdelijke oplossingen voor problemen met toepassingscompatibiliteit

Waarschuwing Deze oplossingen kunnen doen voor een computer of netwerk kwetsbaarder voor aanvallen door kwaadwillende gebruikers of schadelijke software, zoals virussen. We raden u niet met deze tijdelijke oplossingen, maar verschaft u deze informatie zodat u met deze tijdelijke oplossingen naar eigen goeddunken implementeren kunt. Gebruik deze tijdelijke oplossingen voor uw eigen risico.

Methode 1: Update registersleutels (beschikbaar voor alle versies van .NET Framework)



SCH_SEND_AUX_RECORD-structuur (globaal) uitschakelen
Voor alle toepassingen, voegt u de volgende registersubsleutel:
De registerlocatie van het:
HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\<version_number>

DWORD-naam: SchSendAuxRecord
Waardegegevens: 0

Opmerking Tijdelijke aanduiding voor de <version_number>is v4.0.30319 of v2.0.50727, afhankelijk van de versie.

Voor 32-bits toepassingen die worden uitgevoerd op 64-bits computers, moet u ook de volgende subsleutel in het register toevoegen:
</version_number>
De registerlocatie van het:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\.NETFramework\<version_number>

DWORD-naam: SchSendAuxRecord
Waardegegevens: 0

Opmerking Tijdelijke aanduiding voor de <version_number>is v4.0.30319 of v2.0.50727, afhankelijk van de versie.

</version_number>
Tijdelijke oplossing
Schakel tijdelijk de veilige modus die in dit artikel wordt beschreven, klikt u op de link voor het downloaden van een REG-bestand en dubbelklik op het gedownloade REG-bestand om de wijzigingen in het register.

Voor toepassingen die zijn gericht op het Microsoft.NET Framework 3.5:

Gericht op het Microsoft .NET Framework 4.0 en latere versies voor toepassingen:

Als u wilt de veilige modus wordt beschreven in dit artikel opnieuw in te schakelen, klikt u op de link voor het downloaden van een REG-bestand en dubbelklik op het gedownloade REG-bestand om de wijzigingen in het register.

Voor toepassingen die zijn gericht op Microsoft.NET Framework 3.5:

Gericht op het Microsoft .NET Framework 4.0 en latere versies voor toepassingen:

Voor meer informatie over het downloaden van Microsoft-ondersteuningsbestanden klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base weer te geven:
119591 Microsoft-ondersteuningsbestanden via online services downloaden
Microsoft heeft dit bestand op virussen gescand. Microsoft gebruikt de meest actuele software voor virusdetectie die beschikbaar was op de datum waarop het bestand werd gepost. Het bestand is opgeslagen op beveiligde servers die onbevoegde wijzigingen aan het bestand verhinderen.


Structuur van de SCH_SEND_AUX_RECORD voor afzonderlijke toepassingen uitschakelen
Voor alle toepassingen, voegt u de volgende registersubsleutel:
De registerlocatie van het:
HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\<version_number>\System.Net.ServicePointManager.SchSendAuxRecord

DWORD-naam: Volledig gekwalificeerde pad naar de toepassing .exe (bijvoorbeeld C:\MyApp\MyApp.exe)
Waardegegevens: 0

Opmerking Tijdelijke aanduiding voor de <version_number>is v4.0.30319 of v2.0.50727, afhankelijk van de versie.

Voor 32-bits toepassingen die worden uitgevoerd op 64-bits computers, moet u ook de volgende subsleutel in het register toevoegen:
</version_number>
De registerlocatie van het:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\.NETFramework\<version_number>\System.Net.ServicePointManager.SchSendAuxRecord

DWORD-naam: Volledig gekwalificeerde pad naar de toepassing .exe (bijvoorbeeld C:\MyApp\MyApp.exe)
Gegevens: 0 (de enige geldige waarde is 0. Elke andere waarde wordt genegeerd.)

Opmerking Tijdelijke aanduiding voor de <version_number>is v4.0.30319 of v2.0.50727, afhankelijk van de versie.

</version_number>

Methode 2: Wijzig de configuratie op toepassingsniveau (alleen beschikbaar voor de versie van .NET Framework 4.6 en hoger)

Beginnen met het .NET Framework 4.6, kunt u de configuratie op het niveau van een toepassing via code of toepassing configuratie of het register gewijzigd.

In het .NET Framework 4.6, kunt u de schakeloptie met behulp van een van de volgende manieren instellen. Deze voorbeelden van de beveiliging uitgeschakeld.
  • Via programmering

    Allereerst de toepassing moet doen is de volgende code worden uitgevoerd. Dit is omdat punt servicebeheer wordt slechts één keer worden geïnitialiseerd.
    private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchSendAuxRecordName = @"Switch.System.Net.DontEnableSchSendAuxRecord"; AppContext.SetSwitch(DisableCachingName, true); AppContext.SetSwitch(DontEnableSchSendAuxRecordName , true);
  • Toepassingsconfiguratie

    Als u de toepassingsconfiguratie, de volgende vermelding toevoegen:
    <runtime><AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchSendAuxRecord=true"/></runtime>
  • Registersleutel (global computer)

    Registerlocaties:
    HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AppContext
    HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\AppContext

    Waarde: Switch.System.Net.DontEnableSchSendAuxRecord
    Type: Tekenreeks
    Waarde: True

    Opmerking Switch.System.Net.DontEnableSchSendAuxRecord = False voor alle toepassingen.
Meer informatie
Het volgende is een voorbeeld Client/Server-communicatiepatroon voordat en nadat deze update is geïnstalleerd. Deze informatie wordt verstrekt ter illustratie voor het identificeren van een breuk van de toepassing door de installatie van deze hotfix.

Zonder het beperkenMet de oplossing
[Server] wachten op verbindingen (127.0.0.1:4431)
[Client] Verbinding maken met localhost:4431
[Server] De client is verbonden.
[Client] Verbonden. Bezig met verifiëren...
[Server] De client is geverifieerd.
[Client] Verzenden van de aanvraag (94 Bytes)
[Client] Wacht op antwoord...

[Server] 94 bytes ontvangen:<GET></GET>
Host: contoso.com
User-Agent: Toepassing testen

>>>
[Server] Heeft gereageerd met 476 bytes.

[Client 1: 476 Bytes] Antwoord:<HTTP .1="" 200=""></HTTP>

>>>>>
[Server] wachten op verbindingen (127.0.0.1:4431)
[Client] Verbinding maken met localhost:4431
[Server] De client is verbonden.
[Client] Verbonden. Bezig met verifiëren...
[Server] De client is geverifieerd.
[Client] Verzenden van de aanvraag (94 Bytes)
[Client] Wacht op antwoord...
[Server] Ontvangen bytes 1: <G>>><b00> </b00> </G>
[Server] 93 bytes ontvangen:<ET></ET>
Host: contoso.com
User-Agent: Toepassing testen

>>>
[Server] Heeft gereageerd met 476 bytes.
[Client 1: 1 Bytes] Antwoord: <H>>>><b00> </b00> </H>
[Client 2: 475 Bytes] Antwoord:<TTP .1="" 200=""></TTP>

>>>>>

Waarschuwing: dit artikel is automatisch vertaald

Eigenschappen

Artikel-id: 3155464 - Laatst bijgewerkt: 05/10/2016 22:01:00 - Revisie: 1.0

Microsoft .NET Framework 4.6.1, Microsoft .NET Framework 4.6, Microsoft .NET Framework 4.5.2, Microsoft .NET Framework 3.5.1, Microsoft .NET Framework 3.5, Microsoft .NET Framework 2.0 Service Pack 2

  • kbsecvulnerability kbsecurity kbsecbulletin kbfix kbexpertiseinter kbbug atdownload kbmt KB3155464 KbMtnl
Feedback