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

Sammanfattning

Informationsläckor finns i Transport Layer Security-protokollet och protokollet SSL (Secure Sockets Layer) (TLS/SSL), som implementeras i krypteringskomponenten i 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 icke-krypterad data i säkerhet kanalen och sedan utföra en man-in-the-middle-attack (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 paket.Detta problem har åtgärdats som en del av Microsoft-säkerhetsbulletinen MS16-065. Den här uppdateringen ändrar sättet att 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.

Säkerhetsproblem titel

CVE-nummer

Allmänt lämnas

Utnyttja

Förfalskning av TLS/SSL

CVE-2016-0149

Ja

Nej.

Lösning av problem

Ändringen infördes i Microsoft-säkerhetsbulletinen MS16-065 medför den första posten i 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 den första Läs 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 TLS.Obs! En förutsättning måste du installera Microsoft-säkerhetsbulletin MS12-006 om du vill aktivera 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 ditt program 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änder TLS 1.2-protokollet genom att ändra registret eller programmässigt konfigurera versionen av protokollet.

  • Ändra registretViktigtFölj noga anvisningarna i detta avsnitt. Om du ändrar registret på felaktigt sätt kan det uppstå allvarliga problem. Innan du ändrar den, Säkerhetskopiera registret för återställning om problem uppstår..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 under den Föreslagna åtgärder i Microsoft Security Advisory 2960358 -avsnittet på webbplatsen Microsoft TechNet. Viktigt Denna ändring i registret fungerar endast om följande villkor är uppfyllda:

    • Program som använder ServicePointManager-baserade API: er är inte anger värdet ServicePointManager.SecurityProtocol uttryckligen. 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.

  • Konfigurera Protokollversionen programmässigt.NET Framework 4.0 och 4.5 program som körs på.NET Framework 4.5 och senare versioner och som använder 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 avsnittet SslStream klass på webbplatsen MSDN (Microsoft Developer).Obs! .NET Framework 4.6 och senare versioner använder TLS 1.2 TLS 1.1 och TLS 1.0 som standard protokoll. Detta diskuteras i 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änglig i ett enda anrop 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 till exempel koden tillgänglig här som en referens för hur du åtgärdar programmet korrekt utföra Läs samtalet.För ett exempel http-begäran som visar skillnaden i funktion innan (med minskning) och efter (utan begränsning) installerades uppdateringar 3147461 och 3147458 , finns i avsnittet "Mer Information".Ett komplett exempel på metoden Stream.Read i avsnittet Stream.Read metod (Byte [], Int32, Int32) på webbplatsen MSDN (Microsoft Developer).

Lösningar på kompatibilitetsproblem med program

Varning Lösningarna 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) Inaktivera SCH_SEND_AUX_RECORD struktur för enskilda program

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\ < versionsnummer >DWORD-namn: SchSendAuxRecordVärde data: 0Obs! Platshållaren < versionsnummer > ä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:

Plats i registret: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\. NETFramework\ < versionsnummer >DWORD-namn: SchSendAuxRecordVärde data: 0Obs! Platshållaren < versionsnummer > är v4.0.30319 eller v2.0.50727, beroende på vilken version.

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 du vill ändra registret.Målobjekt för Microsoft.NET Framework 3.5 för program:

Download Hämta filen ManualOptOutSchSendAuxRecord20.reg nu. Målobjekt för Microsoft.NET Framework 4.0 och senare versioner för program:

Download Hämta filen ManualOptOutSchSendAuxRecord40.reg nu. 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 du vill ändra registret.För tillämpningar för Microsoft.NET Framework 3.5:

Download Hämta filen ManualOptInSchSendAuxRecord20.reg nu. Målobjekt för Microsoft.NET Framework 4.0 och senare versioner för program:

Download Hämta filen ManualOptInSchSendAuxRecord40.reg nu. 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 hämta Microsoft-supportfiler från onlinetjänsterMicrosoft 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älper 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\ < versionsnummer > \System.Net.ServicePointManager.SchSendAuxRecordDWORD-namn: Fullständig sökväg för programmet .exe (till exempel C:\MyApp\MyApp.exe)Värde data: 0Obs! Platshållaren < versionsnummer > ä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:

Plats i registret: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\. NETFramework\ < versionsnummer > \System.Net.ServicePointManager.SchSendAuxRecordDWORD-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ållaren < versionsnummer > är v4.0.30319 eller v2.0.50727, beroende på vilken version.

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 konfiguration eller registret ä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ässigtDet 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\AppContextHKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\. NETFramework\AppContextVärde: Switch.System.Net.DontEnableSchSendAuxRecordTyp: SträngVärde: SANTObs! 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 alla program brott på installationen av den här korrigeringsfilen.

Utan minskning

Med minskning

[Server] väntar anslutningar (127.0.0.1:4431)[Client] Anslutning 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: <<< få / HTTP/1.0Host: contoso.comUser-Agent: Testa programmet>>>[Server] Svarade med 476 byte.[Client 1: 476 byte] Svar: <<<<< HTTP/1.1 200 OK>>>>>

[Server] väntar anslutningar (127.0.0.1:4431)[Client] Anslutning 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 >>>[Server] Mottagna byte 93: <<< ET / HTTP/1.0Host: contoso.comUser-Agent: Testa programmet>>>[Server] Svarade med 476 byte.[Client 1: 1 byte] Svar: <<<<< H >>>>>[Client 2: 475 byte] Svar: <<<<< ANSL/1.1 200 OK>>>>>

Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.

Communities hjälper dig att ställa och svara på frågor, ge feedback och få råd från experter med rika kunskaper.