Du arbetar offline, väntar på att återansluta till Internet

MS16-065: Beskrivning av det TLS/SSL-protokoll säkerhetsproblemet (CVE-2016-0149): 10 maj 2016

VIKTIGT: Denna artikel har översatts av Microsofts programvara för maskin-översättning och möjligen efterredigerats via CTF-teknologi av Microsofts community istället för av en professionell mänsklig översättare. För att du på ditt eget språk skall få tillgång till samtliga Knowledge Base-artiklar erbjuder Microsoft både mänskligt översatta såväl som maskinöversatta artiklar samt artiklar som efterredigerats av en community. En maskinöversatt artikel likväl som en artikel som blivit efterredigerad av en community är dock inte alltid helt perfekt, då de kan innehålla misstag i ordförrådet, syntax- och grammatikfel. Microsoft är inte ansvarigt för några felaktigheter, misstag eller skador orsakade av felöversättningar eller för våra kunders bruk av innehållet. Microsoft uppdaterar ofta sin programvara för maskinöversättning samt de verktyg som förbättrar den maskinöversatta efterredigeringen.

Den engelska versionen av artikeln är följande: 3155464
Sammanfattning
Informationsläckor finns i protokollet TLS och SSL (Secure Sockets Layer) protokoll (TLS/SSL) som implementerats i komponenten av Microsoft.NET Framework. En angripare som lyckas utnyttja det här säkerhetsproblemet kan dekryptera krypterade TLS/SSL-trafik.

Om du vill utnyttja säkerhetsproblemet först angriparen att injicera okrypterad data i kanalen säkerhet och sedan utföra en attack med man-in-the-middle (MiTM) mellan riktade klient och en server som legitima. Den här uppdateringen åtgärdar problemet genom att ändra sättet att komponenten .NET skickar och tar emot krypterade nätverkspaket.

Detta problem har åtgärdats som en del av Microsoft Security Bulletin MS16-065. Den här uppdateringen ändrar hur komponenten.NET Framework skickar och tar emot krypterade nätverkspaket.

Följande tabell innehåller länkar till vanliga posten för varje säkerhetsproblem i listan vanliga sårbarheter och exponeringar.

Rubrik för säkerhetsproblemCVE-nummerOffentligt lämnasUtnyttja
Förfalskning av TLS/SSLCVE-2016-0149JaNr

Lösning av problem

Ändringen infördes i Microsoft Security Bulletin MS16-065 orsaker registrera första TLS efter handskakningen ska delas. Detta medför att SslStream, WebRequest (i HttpWebRequest, FtpWebRequest), SmtpClient och HttpClient (där utifrån i HttpWebRequest) strömmar för att returnera en enda byte för första läsa, följt av resten (n-1)-byte i efterföljande läsningar. Den här förändringen sker endast för program som använder TLS 1.0 + Cipher Block Chaining, men inte när de använder TLS 1.1 eller 1.2 i TLS.

Obs! En förutsättning är att installera Microsofts säkerhetsbulletin MS12-006 Så här aktiverar du den här uppdateringen.

Denna ändring kan orsaka att vissa program som bygger på.NET Framework att bryta. Den här artikeln beskrivs två metoder som du kan använda för att uppdatera programmet ska fungera korrekt när du har installerat Microsoft Security Bulletin MS16-065.

Mildrande åtgärder för kompatibilitetsproblem

Alternativ 1: Växla till protokollet TLS 1.2

Det här alternativet gör programmet använda protokollet TLS 1.2 genom att ändra registret eller programmässigt konfigurera versionen av protokollet.
  • Ändra registret

    Viktigt Följ noga anvisningarna i detta avsnitt. Om du ändrar registret på felaktigt sätt kan det uppstå allvarliga problem. Innan du ändrar det. Säkerhetskopiera registret för återställning om det uppstår problem.

    .NET Framework 4.0 och 4.5.x.NET Framework-program som körs på.NET Framework 4.5 och senare versioner kan växla standardprotokoll TLS 1.2, TLS 1.1 och TLS 1.0 genom att aktivera registernyckeln SchUseStrongCrypto . Den här registernyckeln diskuteras i avsnittet Föreslagna åtgärder i den Microsoft Security Advisory 2960358 avsnitt på webbplatsen Microsoft TechNet.

    Viktigt Ändrar i registret fungerar endast om följande villkor är uppfyllda:
    • Program som använder ServicePointManager-baserade API: er är inte inställningen i ServicePointManager.SecurityProtocol explicit värde. Exempel på sådana klasser är System.Net.Http.HttpClient, System.Net.FtpWebRequest, System.Net.HttpWebRequestoch System.Net.Mail.SmtpClient. Ställa in ServicePointManager.SecurityProtocol i koden har företräde framför i registret.
    • Program använder SslStream AuthenticateAsClient(String) överbelastning.

  • Programmässigt konfigurera protokollversion

    .NET Framework 4.0 och 4.5 program som körs på.NET Framework 4.5 och senare versioner och som använder det SslStream AuthenticateAsClient(String,X509CertificateCollection,SslProtocols,Boolean) överbelastning måste kompileras, ange SslProtocols.Tls12, SslProtocols.Tls11och SslProtocols.Tls som den tredje parametern. En fullständig beskrivning av hur du använder klassen SslStream finns i SslStream-klass avsnitt på webbplatsen MSDN (Microsoft Developer).

    Obs! .NET Framework 4.6 och senare använda TLS 1.2, TLS 1.1 och TLS 1.0 som standard protokoll. Detta beskrivs i den Microsoft Security Advisory 2960358 avsnitt på webbplatsen Microsoft TechNet.

Alternativ 2: Hantera delade paket

Den här uppdateringen medför att en post ska delas upp i flera poster. Om ett program förväntas ska vara tillgängliga i ett enda samtal Läs hela posten, avbryts därför sådana program. För att säkerställa att programmet fungerar korrekt, kontrollera att programmet hanterar delade paket genom att utföra Stream.Read samtal på rätt sätt. Du kan använda exempelkoden tillgängliga här som referens för hur du åtgärdar du programmet att utföra korrekt läsa ringa.

För ett exempel http-begäran som visar skillnaden i funktion innan (med minskning) och efter (utan begränsning) uppdateringar 3147461 och 3147458 har installerat, finns i avsnittet "Mer Information".

Ett komplett exempel på metoden Stream.Read finns i Stream.Read-metoden (Byte[],Int32,Int32) avsnitt på webbplatsen MSDN (Microsoft Developer).

Lösningar på kompatibilitetsproblem med program

Varning Dessa lösningar kan göra datorn eller nätverket mer sårbara för angrepp från angripare eller skadliga program som virus. Vi rekommenderar inte att lösningarna men lämnar information så att du kan implementera lösningarna så önskar. Använd dessa lösningar på egen risk.

Metod 1: Uppdatera registernycklar (tillgänglig för alla versioner av.NET Framework)



Inaktivera SCH_SEND_AUX_RECORD struktur (globalt)
För alla program, lägger du till följande registerundernyckel:
Plats i registret:
HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\<version_number>

DWORD-namn: SchSendAuxRecord
Värde data: 0

Obs! Platshållare för <version_number>är v4.0.30319 eller v2.0.50727, beroende på vilken version.

För 32-bitars program som körs på 64-bitarsdatorer har även lägga till följande registerundernyckel:
</version_number>
Plats i registret:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\.NETFramework\<version_number>

DWORD-namn: SchSendAuxRecord
Värde data: 0

Obs! Platshållare för <version_number>är v4.0.30319 eller v2.0.50727, beroende på vilken version.

</version_number>
temporär lösning
Tillfälligt inaktivera skyddat läge som beskrivs i denna artikel, klicka på länken om du vill hämta en REG-fil och dubbelklickar på hämtade REG-filen om du vill göra ändringar i registret.

Målobjekt för Microsoft.NET Framework 3.5 för program:

Målobjekt för Microsoft.NET Framework 4.0 och senare versioner för program:

Om du vill aktivera skyddat läge som beskrivs i denna artikel, klicka på länken om du vill hämta en REG-fil och dubbelklickar på hämtade REG-filen om du vill ändra registret.

För tillämpningar för Microsoft.NET Framework 3.5:

Målobjekt för Microsoft.NET Framework 4.0 och senare versioner för program:

För mer information om hur du hämtar supportfiler från Microsoft klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
119591 Hur du hämtar Microsoft-supportfiler från onlinetjänster
Microsoft har genomsökt denna fil efter virus. Microsoft använde det mest aktuella antivirusprogram som var tillgängligt när filen lades upp. Filen är sparad på servrar med utökad säkerhet som hjälpa till att förhindra otillåtna ändringar av den.


Inaktivera SCH_SEND_AUX_RECORD struktur för enskilda program
För alla program, lägger du till följande registerundernyckel:
Plats i registret:
HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\<version_number>\System.Net.ServicePointManager.SchSendAuxRecord

DWORD-namn: Fullständig sökväg för programmet .exe (till exempel C:\MyApp\MyApp.exe)
Värde data: 0

Obs! Platshållare för <version_number>är v4.0.30319 eller v2.0.50727, beroende på vilken version.

För 32-bitars program som körs på 64-bitarsdatorer har även lägga till följande registerundernyckel:
</version_number>
Plats i registret:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\.NETFramework\<version_number>\System.Net.ServicePointManager.SchSendAuxRecord

DWORD-namn: Fullständig sökväg för programmet .exe (till exempel C:\MyApp\MyApp.exe)
Värdedata: 0 (det enda giltiga värdet är 0. Alla andra värden ignoreras.)

Obs! Platshållare för <version_number>är v4.0.30319 eller v2.0.50727, beroende på vilken version.

</version_number>

Metod 2: Ändra konfigurationen på programnivå (tillgänglig endast för.NET Framework version 4.6 och senare versioner)

Du kan ändra konfiguration på en programnivå via kod eller programmet konfigurations- eller ändringar börjar med.NET Framework 4.6.

I.NET Framework 4.6, kan du ange växeln genom att använda någon av följande metoder. Dessa exempel inaktivera säkerhetsfunktionen.
  • Programmässigt

    Det första du bör göra programmet körs följande kod. Detta beror på att punkt tjänsthanteraren ska initieras endast en gång.
    private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchSendAuxRecordName = @"Switch.System.Net.DontEnableSchSendAuxRecord"; AppContext.SetSwitch(DisableCachingName, true); AppContext.SetSwitch(DontEnableSchSendAuxRecordName , true);
  • Programkonfiguration

    Ändra programkonfigurationen genom att lägga till följande post:
    <runtime><AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchSendAuxRecord=true"/></runtime>
  • Registernyckel (global dator)

    Platser i registret:
    HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AppContext
    HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\AppContext

    Värde: Switch.System.Net.DontEnableSchSendAuxRecord
    Typ: Sträng
    Värde: SANT

    Obs! Switch.System.Net.DontEnableSchSendAuxRecord = False för alla program.
Mer Information
Följande är ett exempel klient/Server-kommunikation mönster före och efter att uppdateringen har installerats. Den här informationen för bild för att identifiera eventuella program brott på installationen av den här korrigeringsfilen.

Utan minskningMed minskning
[Server] väntar anslutningar (127.0.0.1:4431)
[Client] Ansluta till localhost:4431
[Server] Klienten är ansluten.
[Client] Ansluten. Autentisering sker...
[Server] Klienten är autentiserad.
[Client] Skicka en begäran (94 byte)
[Client] Väntar på svar...

[Server] Mottagna 94 byte:<GET></GET>
Värd: contoso.com
User-Agent: Testa programmet

>>>
[Server] Svarade med 476 byte.

[Client 1: 476 byte] Svar:<HTTP .1="" 200=""></HTTP>

>>>>>
[Server] väntar anslutningar (127.0.0.1:4431)
[Client] Ansluta till localhost:4431
[Server] Klienten är ansluten.
[Client] Ansluten. Autentisering sker...
[Server] Klienten är autentiserad.
[Client] Skicka en begäran (94 byte)
[Client] Väntar på svar...
[Server] Mottagna byte 1: <G>>><b00> </b00> </G>
[Server] Mottagna byte av 93:<ET></ET>
Värd: contoso.com
User-Agent: Testa programmet

>>>
[Server] Svarade med 476 byte.
[Client 1: 1 byte] Svar: <H>>>><b00> </b00> </H>
[Client 2: 475 byte] Svar:<TTP .1="" 200=""></TTP>

>>>>>

Varning: Den här artikeln har automatöversatts

Egenskaper

Artikel-id: 3155464 – senaste granskning 05/10/2016 21:09:00 – revision: 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 KbMtsv
Feedback
/html>