Przejdź do głównej zawartości
Pomoc techniczna
Zaloguj się przy użyciu konta Microsoft
Zaloguj się lub utwórz konto.
Witaj,
Wybierz inne konto.
Masz wiele kont
Wybierz konto, za pomocą którego chcesz się zalogować.

Streszczenie

Protokoły Transport Layer Security i protokołu Secure Sockets Layer (TLS/SSL) istnieje luka umożliwiająca ujawnienie informacji, zaimplementowanego w składniku szyfrowania systemu Microsoft.NET Framework. Osoba atakująca, której uda się wykorzystać tę lukę, może odszyfrować zaszyfrowanego ruchu protokołu TLS/SSL.

Aby wykorzystać tę lukę, osoba atakująca najpierw musi wstrzyknąć nieszyfrowane dane do bezpiecznego kanału, a następnie przeprowadzić atak man-in--middle (MiTM) między klientem ukierunkowane i legalny serwer. Ta aktualizacja usuwa lukę, zmieniając sposób, że składnik .NET szyfrowania wysyła i odbiera pakiety sieciowe zaszyfrowane.

Ta usterka jest ustalona w ramach biuletynu zabezpieczeń firmy Microsoft MS16-065. Ta aktualizacja zmienia sposób, że składnik.NET Framework szyfrowania wysyła i odbiera pakiety sieciowe zaszyfrowane.

Poniższa tabela zawiera łącza do standardową dla poszczególnych usterek w na liście znanych luk i zagrożeń.

Luki w zabezpieczeniach tytuł

Numer CVE

Publicznie

Wykorzystana

Luka umożliwiająca fałszowanie TLS/SSL

CVE-2016-0149

Tak

Nie

Luki w zabezpieczeniach rozdzielczość

Dla zmian wprowadzonych w biuletynie zabezpieczeń firmy Microsoft MS16-065 powoduje, że pierwszy rekord TLS po handshake do podziału. Powoduje to SslStream, WebRequest (HttpWebRequest, FtpWebRequest), SmtpClient i HttpClient (tam, gdzie w oparciu o HttpWebRequest) strumieni zwraca jeden bajt pierwszy Odczyt, natychmiast następuje bajtów odpoczynku (n-1), w kolejnych odczytów. Ta zmiana zachowanie występuje tylko aplikacje używające protokołu TLS 1.0 + Cipher Block Chaining, ale nie kiedy korzystają z protokołu TLS 1.1 lub TLS 1.2.

Uwaga Jako warunek wstępny należy zainstalować program Microsoft Security Bulletin MS12-006 do włączenia tej aktualizacji.

Ta zmiana może spowodować niektóre aplikacje, które są oparte na.NET Framework, aby przerwać. W tym artykule opisano dwie metody, które można użyć do aktualizacji aplikacji, aby działać poprawnie po zainstalowaniu biuletynu zabezpieczeń firmy Microsoft MS16-065.

Czynniki ograniczające zagrożenie dla problemów ze zgodnością

Opcja 1: Przełącz się do protokołu TLS 1.2

Ta opcja sprawia, że aplikacja używać protokołu TLS 1.2 przez modyfikację rejestru lub programowo Konfigurowanie wersji protokołu.

  • Modyfikacja rejestru

    Ważne
    Kroki opisane w tej sekcji należy wykonać dokładnie. Nieprawidłowa modyfikacja rejestru może spowodować poważne problemy. Przed przystąpieniem do modyfikacji, wykonać kopię zapasową rejestru w celu przywrócenia w razie wystąpienia problemów.

    .NET Framework 4.0 i aplikacji 4.5.x.NET Framework, które są uruchomione w systemie.NET Framework 4.5 lub nowszym można włączyć domyślny protokół TLS 1.2, TLS 1.1 i TLS 1.0 przez włączenie klucza rejestru SchUseStrongCrypto . Ten klucz rejestru została omówiona w sekcji Zalecane czynności w temacie Microsoft Security Advisory 2960358 w witrynie sieci Web Microsoft TechNet.

    Ważne Tę zmianę rejestru będzie działać tylko, jeśli są spełnione następujące warunki:

    • Aplikacje, które używają interfejsów API opartych na ServicePointManager jest ustawienie wartości ServicePointManager.SecurityProtocol jawnie . Przykładami takich klas System.Net.Http.HttpClient, System.Net.FtpWebRequest, System.Net.HttpWebRequesti System.Net.Mail.SmtpClient. Ustawienie ServicePointManager.SecurityProtocol w kodzie ma pierwszeństwo przed rejestru.

    • Aplikacje używają przeciążenie SslStream AuthenticateAsClient(String) .


  • Programowo skonfigurować wersja protokołu

    .NET Framework 4.0 oraz 4.5 aplikacje uruchomione na.NET Framework 4.5 i nowsze wersje, które używają SslStream AuthenticateAsClient(String, X509CertificateCollection, SslProtocols, Boolean) przeciążenie musi być ponownie skompilowana, określając SslProtocols.Tls12, SslProtocols.Tls11i SslProtocols.Tls jako trzeciego parametru. Pełny opis sposobu użycia klasy zobacz temat Klasy w witrynie Microsoft Developer (MSDN).

    Uwaga .NET Framework 4.6 i nowsze wersje Użyj TLS 1.2, TLS 1.1 i TLS 1.0 jako domyślne protokołu. Jest to omówione w temacie Microsoft Security Advisory 2960358 w witrynie sieci Web Microsoft TechNet.


Opcja 2: Uchwyt podzielić pakiety

Ta aktualizacja powoduje, że pojedynczy rekord ma być podzielony na wiele rekordów. W związku z tym jeśli aplikacja oczekuje kompletny zapis ma być dostępny w pojedyncze wywołanie odczytu , takie aplikacje mogą przestać działać. Aby upewnić się, czy aplikacja działa poprawnie, sprawdź, czy aplikacja obsługuje pakiety split wykonując wywołanie więcej poprawnie. Umożliwia przykładowy kod dostępny tutaj jako punkt odniesienia dla jak naprawić aplikacji poprawnie wykonać wywołanie odczytu .

Aby uzyskać przykładowe żądanie HTTP, który pokazuje różnicę w zachowaniu przed (z ograniczenia zagrożenia) i po (bez ograniczenia) zostały zainstalowane aktualizacje 3147461 i 3147458 , zobacz sekcję "Więcej informacji".

Pełny przykład metody więcej zobacz temat Metoda więcej (Byte [], Int32, Int32) w witrynie Microsoft Developer (MSDN).

Obejścia problemów ze zgodnością aplikacji

Ostrzeżenie: Rozwiązania te mogą uzależnić komputer lub sieć będą bardziej narażone na ataki złośliwych użytkowników lub złośliwego oprogramowania, takiego jak wirusy. Firma Microsoft nie zaleca następujące obejścia, ale podaje te informacje, aby rozwiązania te można zaimplementować według własnego uznania. Rozwiązania te należy używać na własną odpowiedzialność.

Metoda 1: Aktualizacja kluczy rejestru (dostępne dla wszystkich wersji systemu.NET Framework)

Wyłącz struktura SCH_SEND_AUX_RECORD (globalnie)

Wyłącz SCH_SEND_AUX_RECORD struktury dla poszczególnych aplikacji

Wyłącz struktura SCH_SEND_AUX_RECORD (globalnie)

Dla wszystkich aplikacji należy dodać następujący podklucz rejestru:

Lokalizacji w rejestrze: HKEY_LOCAL_MACHINE\Software\Microsoft\. NETFramework\ < numer wersji >
Nazwa DWORD: SchSendAuxRecord
Dane wartości: 0
Uwaga Symbol zastępczy < numer wersji > jest v4.0.30319 lub v2.0.50727, zależnie od wersji.

Dla aplikacji 32-bitowych, które działają na komputerach 64-bitowych należy również dodać następujący podklucz rejestru:

Lokalizacji w rejestrze: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\. NETFramework\ < numer wersji >
Nazwa DWORD: SchSendAuxRecord
Dane wartości: 0
Uwaga Symbol zastępczy < numer wersji > jest v4.0.30319 lub v2.0.50727, zależnie od wersji.

Obejście problemu

Aby tymczasowo wyłączyć tryb bezpieczny, opisane w tym artykule, kliknij odpowiednie łącze, aby pobrać plik .reg i kliknij dwukrotnie plik .reg pobrane do zmiany rejestru.

W przypadku aplikacji Microsoft.NET Framework 3.5-określanie wartości docelowej:

Download Pobierz plik ManualOptOutSchSendAuxRecord20.reg.
Dla aplikacji-określanie wartości docelowej Microsoft.NET Framework 4.0 i nowszych wersjach:

Download Pobierz plik ManualOptOutSchSendAuxRecord40.reg.
Aby ponownie włączyć tryb bezpieczny, opisane w tym artykule, kliknij odpowiednie łącze, aby pobrać plik .reg i kliknij dwukrotnie plik .reg pobrane do zmiany rejestru.

W przypadku aplikacji Microsoft.NET Framework 3.5-określanie wartości docelowej:

Download Pobierz plik ManualOptInSchSendAuxRecord20.reg.
Dla aplikacji-określanie wartości docelowej Microsoft.NET Framework 4.0 i nowszych wersjach:

Download Pobierz plik ManualOptInSchSendAuxRecord40.reg.
Aby uzyskać więcej informacji dotyczących sposobu pobierania plików pomocy technicznej firmy Microsoft, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

119591 jak uzyskać pliki pomocy technicznej Microsoft w usługach onlineFirma Microsoft przeskanowała plik w poszukiwaniu wirusów. Firma Microsoft użyła najnowszego oprogramowania do wykrywania wirusów, które było dostępne w dniu opublikowania pliku. Plik jest przechowywany na serwerach o podwyższonych zabezpieczeniach, które uniemożliwiają nieautoryzowane zmiany w pliku.


Wyłącz SCH_SEND_AUX_RECORD struktury dla poszczególnych aplikacji

Dla wszystkich aplikacji należy dodać następujący podklucz rejestru:

Lokalizacji w rejestrze: HKEY_LOCAL_MACHINE\Software\Microsoft\. \System.Net.ServicePointManager.SchSendAuxRecord NETFramework\ < numer wersji >
Nazwa DWORD: W pełni kwalifikowana ścieżka .exe aplikacji (na przykład C:\MyApp\MyApp.exe)
Dane wartości: 0
Uwaga Symbol zastępczy < numer wersji > jest v4.0.30319 lub v2.0.50727, zależnie od wersji.

Dla aplikacji 32-bitowych, które działają na komputerach 64-bitowych należy również dodać następujący podklucz rejestru:

Lokalizacji w rejestrze: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\. \System.Net.ServicePointManager.SchSendAuxRecord NETFramework\ < numer wersji >
Nazwa DWORD: W pełni kwalifikowana ścieżka .exe aplikacji (na przykład C:\MyApp\MyApp.exe)
Dane wartości: 0 (jedyną prawidłową wartością jest 0. Jakakolwiek inna wartość będą ignorowane.)
Uwaga Symbol zastępczy < numer wersji > jest v4.0.30319 lub v2.0.50727, zależnie od wersji.

Metoda 2: Zmień konfigurację na poziomie aplikacji (dostępne tylko dla wersji.NET Framework 4.6 i nowsze wersje)

Począwszy od programu.NET Framework 4.6, można zmienić konfigurację na poziomie aplikacji za pomocą kodu lub stosowania zmian konfiguracji lub rejestru.

.NET Framework 4.6 przełącznik można ustawić za pomocą dowolnej z następujących metod. Przykłady te należy wyłączyć funkcję zabezpieczeń.

  • Programowo

    Pierwszą rzeczą, którą należy zrobić aplikacji jest uruchomiony zostanie poniższy kod. Jest to spowodowane Service Manager punkt zostanie zainicjowany tylko jeden raz.

    private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchSendAuxRecordName = @"Switch.System.Net.DontEnableSchSendAuxRecord"; 
    AppContext.SetSwitch(DisableCachingName, true);
    AppContext.SetSwitch(DontEnableSchSendAuxRecordName , true);
  • Konfiguracja aplikacji

    Do zmiany konfiguracji aplikacji, należy dodać następujący wpis:

    <runtime><AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchSendAuxRecord=true"/>
    </runtime>
  • Klucz rejestru (komputer globalne)

    Lokalizacje rejestru: HKEY_LOCAL_MACHINE\Software\Microsoft\. NETFramework\AppContextHKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\. NETFramework\AppContext
    Wartość: Switch.System.Net.DontEnableSchSendAuxRecord
    Typ: Ciąg znaków
    Wartość: PRAWDA

    Uwaga Switch.System.Net.DontEnableSchSendAuxRecord = False dla wszystkich aplikacji.

Więcej informacji

Poniżej przedstawiono przykładowy wzór komunikacji klient/serwer, przed i po zainstalowaniu tej aktualizacji. Informacja ta jest przewidziane ilustracji do identyfikacji wszelkie złamanie aplikacji z powodu instalacji tej poprawki.

Bez ograniczenia zagrożenia

Z ograniczenia zagrożenia

[Serwer] oczekiwanie na połączenia (127.0.0.1:4431)
[Klient] Nawiązywanie połączenia localhost:4431
[Serwer] Klient jest podłączony.
[Klient] Połączenie. Trwa uwierzytelnianie...
[Serwer] Klient jest uwierzytelniony.
[Klient] Wysyłanie żądania (94 bajtów)
[Klient] Trwa oczekiwanie na odpowiedź...

[Serwer] Odebrane bajty 94: <<< UZYSKAĆ / HTTP/1.0
Host: contoso.com
Agent użytkownika: Testowanie aplikacji

>>>
[Serwer] Odpowiedział z 476 bajtów.

[Client bajtów 1: 476] Odpowiedź: <<<<< HTTP/1.1 200 OK

>>>>>

[Serwer] oczekiwanie na połączenia (127.0.0.1:4431)
[Klient] Nawiązywanie połączenia localhost:4431
[Serwer] Klient jest podłączony.
[Klient] Połączenie. Trwa uwierzytelnianie...
[Serwer] Klient jest uwierzytelniony.
[Klient] Wysyłanie żądania (94 bajtów)
[Klient] Trwa oczekiwanie na odpowiedź...
[Serwer] Odebrane bajty 1: <<< G >>>
[Serwer] Odebrane bajty 93: <<< ET / HTTP/1.0
Host: contoso.com
Agent użytkownika: Testowanie aplikacji

>>>
[Serwer] Odpowiedział z 476 bajtów.
[Client bajtów 1: 1] Odpowiedź: <<<<< H >>>>>
[Client bajtów 2: 475] Odpowiedź: <<<<< TTP/1.1 200 OK

>>>>>


Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.

Czy te informacje były pomocne?

Jaka jest jakość języka?
Co wpłynęło na Twoje wrażenia?
Jeśli naciśniesz pozycję „Wyślij”, Twoja opinia zostanie użyta do ulepszania produktów i usług firmy Microsoft. Twój administrator IT będzie mógł gromadzić te dane. Oświadczenie o ochronie prywatności.

Dziękujemy za opinię!

×