MS16-065: Popis zabezpečení typu zpřístupnění informací protokolu TLS/SSL (CVE-2016-0149): 10 dne 2016

DŮLEŽITÉ: Tento článek je přeložen pomocí softwaru na strojový překlad Microsoft. Nepřesný či chybný překlad lze opravit prostřednictvím technologie Community Translation Framework (CTF). Microsoft nabízí strojově přeložené, komunitou dodatečně upravované články, a články přeložené lidmi s cílem zajistit přístup ke všem článkům v naší znalostní bázi ve více jazycích. Strojově přeložené a dodatečně upravované články mohou obsahovat chyby ve slovníku, syntaxi a gramatice. Společnost Microsoft není odpovědná za jakékoliv nepřesnosti, chyby nebo škody způsobené nesprávným překladem obsahu nebo jeho použitím našimi zákazníky. Více o CTF naleznete na http://support.microsoft.com/gp/machine-translation-corrections/cs.

Projděte si také anglickou verzi článku: 3155464
Souhrn
Chybou umožňující zpřístupnění informací existuje protokol Transport Layer Security a protokol SSL (Secure Sockets Layer) protokol (TLS/SSL), jak je implementována v Microsoft rozhraní.NET Framework je součást šifrování. Útočník, který úspěšně zneužije tuto chybu, může dešifrovat šifrovaný přenos TLS/SSL.

Tuto chybu zabezpečení zneužít, by nejprve musel založit nešifrovaných data do kanálu zabezpečení a proveďte útoku man-in-the-middle (MiTM) mezi klientem cílené a oprávněný server. Tato aktualizace řeší uvedenou chybu zabezpečení změnou způsobu, jakým součást .NET odesílá a přijímá pakety šifrované sítě.

Tato chyba zabezpečení je stanovena jako součást Bulletin zabezpečení společnosti Microsoft MS16-065. Tato aktualizace mění způsob, že součást rozhraní.NET Framework odesílá a přijímá pakety šifrované sítě.

Následující tabulka obsahuje odkazy na standardní položku pro každou chybu v seznamu známých chyb zabezpečení a ohrožení pod.

Název chybyČíslo CVEVeřejně známáZneužití
Chyba zabezpečení umožňující vkládání falešného obsahu TLS/SSLCVE-2016-0149AnoNe

Překlad zabezpečení

Změny zavedené v Bulletin zabezpečení společnosti Microsoft MS16-065 způsobí, že první TLS záznam po handshake rozdělí. To způsobí, že SslStream, WebRequest (HttpWebRequest, FtpWebRequest), SmtpClient a HttpClient (je-li založena na HttpWebRequest) datovým proudům vysílaným vrátí jeden bajt pro první čtení bezprostředně následovány bajty zbývající (n-1) v následné čtení. Tato změna chování dochází pouze u aplikací, které používají protokol TLS 1.0 + Cipher Block Chaining, ale není při použití TLS 1.1 nebo TLS 1.2.

Poznámka: Jako předpoklad je třeba nainstalovat Bulletin zabezpečení společnosti Microsoft MS12-006 Chcete-li povolit tuto aktualizaci.

Tato změna může způsobit některé aplikace založené na rozhraní.NET Framework do konce. Tento článek popisuje dva přístupy, které lze použít k aktualizaci aplikace pracovat správně po instalaci Bulletin zabezpečení společnosti Microsoft MS16-065.

Skutečnosti snižující závažnost rizika pro problémy s kompatibilitou

Možnost 1: Přepínač protokolu TLS 1.2

Tato možnost způsobí, že aplikace používají protokol TLS 1.2 úpravy registru nebo Programová konfigurace verze protokolu.
  • Úpravy registru

    Důležité: Pečlivě postupujte podle pokynů v této části. Při nesprávné úpravě registru může dojít k vážným problémům. Před zahájením úprav, zálohování registru pro obnovení v případě, že dojde k potížím.

    Rozhraní.NET Framework 4.0 a 4.5.x aplikací rozhraní.NET Framework, které běží na .NET Framework 4.5 nebo novější můžete přepnout výchozí protokol TLS 1.2, TLS 1.1 a TLS 1.0 povolíte-li klíč registru SchUseStrongCrypto . Tento klíč registru je popsána v části Doporučené postupyMicrosoft Security Advisory 2960358 téma na webu Microsoft TechNet.

    Důležité: Tato změna registru bude fungovat, pouze pokud jsou splněny následující podmínky:
    • Jsou aplikace, které používají rozhraní API založené Třída ServicePointManager není nastavení ServicePointManager.SecurityProtocol hodnota, která explicitně. Mezi tyto třídy patří System.Net.Http.HttpClient, System.Net.FtpWebRequest, System.Net.HttpWebRequesta System.Net.Mail.SmtpClient. Nastavení ServicePointManager.SecurityProtocol v kódu přednost registru.
    • Aplikace používají SslStream. AuthenticateAsClient(String) přetížení.

  • Programově konfigurovat protokol verze

    Rozhraní.NET Framework 4.0 a 4.5 aplikací, které běží na .NET Framework 4.5 nebo novější a které používají SslStream AuthenticateAsClient(String,X509CertificateCollection,SslProtocols,Boolean) musí být překompilován přetížení určující jako třetí parametr SslProtocols.Tls12, SslProtocols.Tls11a SslProtocols.Tls . Úplný popis použití SslStream třída naleznete SslStream třída téma na webu Microsoft Developer (MSDN).

    Poznámka: 4.6 rozhraní.NET Framework a novější použijte jako výchozí protokol TLS 1.2, TLS 1.1 a TLS 1.0. To je popsána v Microsoft Security Advisory 2960358 téma na webu Microsoft TechNet.

Možnost 2: Zpracování rozdělit pakety

Tato aktualizace způsobí, že jeden záznam má být rozděleno do více záznamů. Proto pokud aplikace očekává úplný záznam je k dispozici v jediné volání čtení , tyto aplikace mohou být přerušeny. Ujistěte se, že se aplikace chová správně, ověřte, že aplikace zpracovává pakety rozdělit správně provedením volání Stream.Read . Můžete použít ukázkový kód, který je k dispozici Zde jako podklad pro řešení aplikace správně provést čtení volání.

Pro požadavek HTTP vzorku, který ukazuje rozdíl v chování před (s zmírnění) a po (bez omezení) aktualizace 3147461 a 3147458 byly nainstalovány, naleznete v části "Další informace".

Kompletní příklad, metoda Stream.Read , naleznete Metoda Stream.Read (Byte[],Int32,Int32) téma na webu Microsoft Developer (MSDN).

Zástupná řešení pro problémy s kompatibilitou aplikací

Upozornění: Tato zástupná řešení může provádět v počítači nebo síti zranitelnější vůči útoku uživatelů se zlými úmysly nebo škodlivému softwaru, například virům. Jsme tato zástupná řešení nedoporučujeme, ale poskytuje tyto informace tak, aby tato řešení lze implementovat podle vlastního uvážení. Pomocí těchto řešení na vlastní nebezpečí.

Metoda 1: Aktualizace klíče registru (k dispozici pro všechny verze rozhraní.NET Framework)



Zakázat SCH_SEND_AUX_RECORD strukturu (globálně)
Pro všechny aplikace přidejte následující podklíč registru:
Umístění v registru:
HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\<version_number>

Název hodnoty DWORD: SchSendAuxRecord
Údaj hodnoty: 0

Poznámka: Zástupný symbol <version_number>je v4.0.30319 nebo v2.0.50727, v závislosti na verzi.

32bitové aplikace spuštěné v 64bitových počítačích také přidáte následující podklíč registru:
</version_number>
Umístění v registru:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\.NETFramework\<version_number>

Název hodnoty DWORD: SchSendAuxRecord
Údaj hodnoty: 0

Poznámka: Zástupný symbol <version_number>je v4.0.30319 nebo v2.0.50727, v závislosti na verzi.

</version_number>
Jak potíže obejít
Dočasné zakázání režimu zabezpečení popsané v tomto článku, klepněte na příslušný odkaz ke stažení souboru s příponou REG a pak poklepejte na soubor REG stažené změny registru.

U aplikací pro Microsoft.NET Framework 3.5:

Aplikace cílení na Microsoft rozhraní.NET Framework 4.0 a novější verze:

Znovu povolit režim zabezpečení popsané v tomto článku, klepněte na příslušný odkaz ke stažení souboru s příponou REG a pak poklepejte na soubor REG stažené změny registru.

U aplikací pro Microsoft.NET Framework 3.5:

Aplikace cílení na Microsoft rozhraní.NET Framework 4.0 a novější verze:

Pro více informací o tom, jak stahovat soubory podpory společnosti Microsoft, klepněte na následující číslo článku v databázi Microsoft Knowledge Base:
119591 Jak získat soubory podpory společnosti Microsoft ze serverů služeb online
Microsoft zkontroloval tento soubor na přítomnost virů. Společnost Microsoft použila aktuální antivirový software, který byl k dispozici k datu, kdy byl soubor vydán. Soubor je uložen na zabezpečených serverech, které pomáhají zabránit neoprávněným změnám v souboru.


Zakázat SCH_SEND_AUX_RECORD struktura pro jednotlivé aplikace
Pro všechny aplikace přidejte následující podklíč registru:
Umístění v registru:
HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\<version_number>\System.Net.ServicePointManager.SchSendAuxRecord

Název hodnoty DWORD: Úplná cesta k .exe aplikaci (například C:\MyApp\MyApp.exe)
Údaj hodnoty: 0

Poznámka: Zástupný symbol <version_number>je v4.0.30319 nebo v2.0.50727, v závislosti na verzi.

32bitové aplikace spuštěné v 64bitových počítačích také přidáte následující podklíč registru:
</version_number>
Umístění v registru:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\.NETFramework\<version_number>\System.Net.ServicePointManager.SchSendAuxRecord

Název hodnoty DWORD: Úplná cesta k .exe aplikaci (například C:\MyApp\MyApp.exe)
Údaj hodnoty: 0 (jediná platná hodnota je 0. Všechny ostatní hodnoty budou ignorovány.)

Poznámka: Zástupný symbol <version_number>je v4.0.30319 nebo v2.0.50727, v závislosti na verzi.

</version_number>

Metoda 2: Změňte konfiguraci na úrovni aplikace (k dispozici pouze pro rozhraní.NET Framework verze 4.6 a novější verze)

Počínaje 4.6 rozhraní.NET Framework, můžete změnit konfiguraci na úrovni aplikace pomocí kódu nebo aplikace změny konfigurace nebo registru.

4.6 rozhraní.NET Framework můžete nastavení přepínače pomocí některé z následujících metod. Tyto příklady zakázat funkci zabezpečení.
  • Programově

    První věcí, kterou by měl provést aplikace je spuštěna následující kód. Důvodem je skutečnost, že správce služby bod bude inicializovat pouze jednou.
    private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchSendAuxRecordName = @"Switch.System.Net.DontEnableSchSendAuxRecord"; AppContext.SetSwitch(DisableCachingName, true); AppContext.SetSwitch(DontEnableSchSendAuxRecordName , true);
  • Konfigurace aplikace

    Chcete-li změnit konfiguraci aplikace, přidejte následující položku:
    <runtime><AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchSendAuxRecord=true"/></runtime>
  • Klíč registru (globální počítač)

    Umístění v registru:
    HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AppContext
    HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\AppContext

    Hodnoty: Switch.System.Net.DontEnableSchSendAuxRecord
    Typ: Řetězec
    Hodnoty: PRAVDA

    Poznámka: Switch.System.Net.DontEnableSchSendAuxRecord = False pro všechny aplikace.
Další informace
Následuje vzorek komunikace klient-Server vzorku před a po instalaci této aktualizace. Tyto informace jsou poskytovány pro ilustraci pro identifikaci rozbití jakékoli aplikace je instalace této opravy.

Bez řešeníS zmírnění
[Server] čekání na připojení (127.0.0.1:4431)
[Client] Připojení k localhost:4431
[Server] Klient připojen.
[Client] Připojen. Ověřování oprávnění...
[Server] Ověření klienta.
[Client] Odesílání požadavku (94 bajtů)
[Client] Čekání na odpověď...

[Server] Přijaté 94 bajtů:<GET></GET>
Host: contoso.com
User-Agent: Testování aplikace

>>>
[Server] Odpověděl s 476 bajtů.

[Client 1: 476 bajtů] Odpověď:<HTTP .1="" 200=""></HTTP>

>>>>>
[Server] čekání na připojení (127.0.0.1:4431)
[Client] Připojení k localhost:4431
[Server] Klient připojen.
[Client] Připojen. Ověřování oprávnění...
[Server] Ověření klienta.
[Client] Odesílání požadavku (94 bajtů)
[Client] Čekání na odpověď...
[Server] Přijato bajtů 1: <G>>><b00> </b00> </G>
[Server] Přijaté bajty 93:<ET></ET>
Host: contoso.com
User-Agent: Testování aplikace

>>>
[Server] Odpověděl s 476 bajtů.
[Klienta bajtů 1: 1] Odpověď: <H>>>><b00> </b00> </H>
[Client 2: 475 bajtů] Odpověď:<TTP .1="" 200=""></TTP>

>>>>>

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 3155464 - Poslední kontrola: 05/11/2016 05:06:00 - Revize: 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 KbMtcs
Váš názor