Applies To.NET Framework 4.6.1 .NET Framework 4.6.2 .NET Framework 3.5.1

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

CVE-nummer

Openbaar gemaakt

Misbruik

TLS/SSL Spoofing-beveiligingslek

CVE-2016-0149

Ja

Nee

Beveiligingslek met betrekking tot resolutie

De wijziging in MS16-065 zorgt ervoor dat 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 MS12-006 zodat deze update installeren.Deze wijziging kan veroorzaken sommige toepassingen die zijn gebaseerd op .NET Framework worden afgebroken. Dit artikel worden twee methoden die u gebruiken kunt voor het bijwerken van uw toepassing correct werkt nadat u MS16-065toepassen.

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 wijzigenBelangrijkVolg 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 kunt terugzetten in het geval 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 Voorgestelde acties van het onderwerp van de Microsoft Security Advisory-2960358 op de Microsoft TechNet-website.Belangrijk Deze registerwijziging werkt alleen als de volgende voorwaarden voldaan wordt:

    • Toepassingen die gebruikmaken van de ServicePointManager-API's met de waarde ServicePointManager.SecurityProtocol niet expliciet instelt. 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 overbelasting van de SslStream AuthenticateAsClient(String) .

  • Via programmacode de protocolversie configurerenHet .NET Framework 4.0 en 4.5 toepassingen die op het .NET Framework 4.5 en hoger worden uitgevoerd en die gebruikmaken van de overbelasting SslStream AuthenticateAsClient(String, X509CertificateCollection, SslProtocols, Boolean) moeten worden gecompileerd, SslProtocols.Tls12, SslProtocols.Tls11en SslProtocols.Tls als de derde parameter opgeven. Zie het onderwerp SslStream klasse op de website van MSDN (Microsoft Developer) voor een volledige beschrijving van het gebruik van de klasse SslStream.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 het onderwerp van de Microsoft Security Advisory-2960358 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. Kunt u de voorbeeld code beschikbaar hier als referentie voor het oplossen van de toepassing correct uitvoeren van de oproep lezen .Voor een voorbeeld van een HTTP-aanvraag die 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 het onderwerp Stream.Read, methode (Byte [], Int32, Int32) op de website van MSDN (Microsoft Developer) voor een volledig voorbeeld van de methode Stream.Read .

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)

De structuur van de SCH_SEND_AUX_RECORD (globaal) uitschakelen Structuur van de SCH_SEND_AUX_RECORD voor afzonderlijke toepassingen uitschakelen

SCH_SEND_AUX_RECORD-structuur (globaal) uitschakelen

Voor alle toepassingen, voegt u de volgende registersubsleutel:

Registerlocatie: HKEY_LOCAL_MACHINE\Software\Microsoft\. NETFramework\ < versie >DWORD-naam: SchSendAuxRecordWaardegegevens: 0Opmerking De tijdelijke aanduiding < versie > 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:

Registerlocatie: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\. NETFramework\ < versie >DWORD-naam: SchSendAuxRecordWaardegegevens: 0Opmerking De tijdelijke aanduiding < versie > is v4.0.30319 of v2.0.50727, afhankelijk van de versie.

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:

Download Het bestand ManualOptOutSchSendAuxRecord20.reg nu downloaden. Gericht op het Microsoft .NET Framework 4.0 en latere versies voor toepassingen:

Download Het bestand ManualOptOutSchSendAuxRecord40.reg nu downloaden. 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:

Download Het bestand ManualOptInSchSendAuxRecord20.reg nu downloaden. Gericht op het Microsoft .NET Framework 4.0 en latere versies voor toepassingen:

Download Het bestand ManualOptInSchSendAuxRecord40.reg nu downloaden. 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:

Hoe 119591 Microsoft-ondersteuningsbestanden via online services downloadenMicrosoft heeft dit bestand op virussen gecontroleerd. 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:

Registerlocatie: HKEY_LOCAL_MACHINE\Software\Microsoft\. NETFramework\ < versie > \System.Net.ServicePointManager.SchSendAuxRecordDWORD-naam: Volledig gekwalificeerde pad naar de toepassing .exe (bijvoorbeeld C:\MyApp\MyApp.exe)Waardegegevens: 0Opmerking De tijdelijke aanduiding < versie > 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:

Registerlocatie: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\. NETFramework\ < versie > \System.Net.ServicePointManager.SchSendAuxRecordDWORD-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 De tijdelijke aanduiding < versie > is v4.0.30319 of v2.0.50727, afhankelijk van de versie.

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 programmeringAllereerst 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);
  • ToepassingsconfiguratieAls 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\AppContextHKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\. NETFramework\AppContextWaarde: Switch.System.Net.DontEnableSchSendAuxRecordType: TekenreeksWaarde: TrueOpmerking 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 beperken

Met 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: <<< ophalen / HTTP/1.0Host: contoso.comUser-Agent: Toepassing testen>>>[Server] Heeft gereageerd met 476 bytes.[Client 1: 476 Bytes] Antwoord: <<<<< HTTP/1.1 200 OK>>>>>

[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 >>>[Server] Ontvangen bytes 93: <<< ET / HTTP/1.0Host: contoso.comUser-Agent: Toepassing testen>>>[Server] Heeft gereageerd met 476 bytes.[Client 1: 1 Bytes] Antwoord: <<<<< H >>>>>[Client 2: 475 Bytes] Antwoord: <<<<< HTTP/1.1 200 OK>>>>>

Meer hulp nodig?

Meer opties?

Verken abonnementsvoordelen, blader door trainingscursussen, leer hoe u uw apparaat kunt beveiligen en meer.

Community's helpen u vragen te stellen en te beantwoorden, feedback te geven en te leren van experts met uitgebreide kennis.