Özet

Şifreleme bileşeni Microsoft .NET Framework'ün uygulandığı gibi iletişim kuralı Aktarım Katmanı Güvenliği ve Güvenli Yuva Katmanı (TLS/SSL) protokolü bir bilginin açığa çıkması güvenlik açığı bulunmaktadır. Bu güvenlik açığından başarıyla yararlanan bir saldırgan, şifrelenmiş TLS/SSL trafiğini şifresini.

Saldırgan güvenlik açığından yararlanabilmesi için öncelikle şifrelenmemiş veri güvenlik kanalı yerleştirir ve ardından man-in--middle (MiTM) saldırısı hedeflenen istemci meşru sunucu arasında gerçekleştirmek açması gerekir. Bu güncelleştirme, .NET şifreleme bileşenini gönderir ve şifreli ağ paketlerini alır biçimini değiştirerek güvenlik açığını giderir.

Bu güvenlik açığı, Microsoft Güvenlik Bülteni MS16-065bir parçası olarak sabittir. Bu güncelleştirme .NET Framework şifreleme bileşeni gönderir ve şifreli ağ paketlerini alır biçimini değiştirir.

Aşağıdaki tablo için her güvenlik açığını Ortak Güvenlik Açıkları ve Etkilenmeler listesinde standart girdi bağlantılar içerir.

Güvenlik Açığı başlık

CVE numarası

Genel olarak bildirilen

Yararlanan

TLS/SSL kimlik sahtekarlığı güvenlik açığı

CVE-2016-0149

Evet

Hayır

Güvenlik çözümlemesi

Microsoft Güvenlik Bülteni MS16-065 ' META_ESCAPE Bölünecek el sıkışması sonra ilk TLS kayıt neden olur. Bu SslStream, WebRequest (HttpWebRequest, FtpWebRequest), SmtpClient ve HttpClient neden olur (HttpWebRequest alarak burada) akışlarının ilk okuma için tek bir bayt döndürür birbirini izleyen okuma hemen geri kalan (n-1) baytıyla ardından. Bu davranış değişikliği, yalnızca uygulamaları için oluşur TLS 1.0 + Şifre blok zincirleme kullanın, ancak değil ne zaman kullandıkları TLS 1.1 veya TLS 1.2.

Not: Bir önkoşul olarak, bu güncelleştirmeyi etkinleştirmek için Microsoft Güvenlik Bülteni MS12-006 yüklemeniz gerekir.

Kesmek için .NET Framework'e dayalı bazı uygulamalar bu değişmesine neden olabilir. Bu makalede, Microsoft Güvenlik Bülteni MS16-065uyguladıktan sonra düzgün çalışması için uygulamanız güncelleştirmek için kullanabileceğiniz iki yaklaşım anlatılmaktadır.

Uyumluluk sorunları için Azaltıcı Etkenler

Seçenek 1: TLS 1.2 protokole geçiş

Bu seçeneği kayıt defterini değiştirmeyle veya program aracılığıyla Yapılandırma Protokolü sürüm 1.2 TLS iletişim kuralını kullanan uygulama yapar.

  • Kayıt defterini değiştirin

    Önemli
    Bu bölümdeki adımları dikkatlice izleyin. Kayıt defterini hatalı bir şeklide değiştirirseniz önemli sorunlar oluşabilir. Sorun durumunda önce geri yükleme kayıt defterini yedekleme üzerinde değişiklik.

    .NET Framework 4.0 ve .NET Framework 4.5.x uygulamaları.NET Framework 4.5 ve sonraki sürümleri çalıştıran varsayılan iletişim kuralı TLS 1.2, TLS 1.1 ve TLS 1.0 için SchUseStrongCrypto kayıt defteri anahtarı etkinleştirilerek geçiş yapabilirsiniz. Bu kayıt defteri anahtarı Microsoft TechNet Web sitesinde Microsoft Güvenlik danışma belgesi 2960358 konu Önerilen Eylemler bölümünde açıklanmıştır.

    Önemli Aşağıdaki koşullar doğruysa, bu kayıt defteri değişikliği yalnızca çalışır:

    • ServicePointManager tabanlı API'leri kullanan uygulamalar değil ayarladığınız ServicePointManager.SecurityProtocol değeri açıkça. System.Net.Http.HttpClient, System.Net.FtpWebRequest, System.Net.HttpWebRequestve System.Net.Mail.SmtpClientböyle sınıflarının örnekleridir. ServicePointManager.SecurityProtocol kod içinde ayarlamak kayıt üzerinde önceliğe sahiptir.

    • Uygulamalar SslStream AuthenticateAsClient(String) aşırı kullanıyor.


  • Protokolü sürüm programatik olarak yapılandırma

    .NET Framework 4.0 ve 4.5.NET Framework 4.5 ve sonraki sürümleri çalıştıran ve SslStream AuthenticateAsClient(String, X509CertificateCollection, SslProtocols, Boolean) aşırı kullanan uygulamalar, SslProtocols.Tls12, SslProtocols.Tls11ve SslProtocols.Tls üçüncü parametresi belirten derlenmelidir. SslStream sınıfının nasıl kullanılacağını tam açıklaması için Microsoft Developer (MSDN) Web sitesinde SslStream sınıf konusuna bakın.

    Not: TLS 1.2, TLS 1.1 ve TLS 1.0 .NET Framework 4.6 ve sonraki sürümlerinde Protokolü Varsayılan olarak kullanın. Bu Microsoft TechNet Web sitesinde Microsoft Güvenlik danışma belgesi 2960358 konuda ele alınmıştır.


Seçenek 2: Tanıtıcı paketleri bölmek.

Bu güncelleştirme, tek bir kayıt içinde birden çok kaydı Bölünecek neden olur. Uygulama tek bir Okuma çağrıda kullanılabilir olması için bütün kaydı bekleniyor, bu nedenle, bu tür uygulamaların çalışmamasına neden olabilir. Uygulama düzgün şekilde davranan emin olmak için uygulama düzgün Stream.Read çağrı gerçekleştirerek bölünmüş paketleri işleme doğrulayın. Örnek kod kullanılabilir burada nasıl uygulama için bir başvuru olarak doğru okunur aramayı gerçekleştirmek için kullanabilirsiniz.

Örnek bir HTTP isteği, önce (azaltma ile) davranış farkı gösterir ve (azaltma) yüklenmiş olan güncelleştirmeleri 3147461 ve 3147458 sonra "Daha fazla bilgi" bölümüne bakın.

Stream.Read yöntemi, tam bir örnek için Microsoft Developer (MSDN) Web sitesinde Stream.Read yöntem (Byte [], Int32, Int32) konusuna bakın.

Uygulama uyumluluk sorunları için geçici çözümler

Uyarı Bu geçici çözümler kötü niyetli kullanıcılar veya virüsler gibi kötü amaçlı yazılımlar tarafından gerçekleştirilen saldırılara bir bilgisayara veya ağa daha savunmasız kalmasına neden olabilir. Biz bu çözümler önerilmez, ancak, bu geçici çözümler kendi uygulayabilmeniz için bu bilgiler sağlanmaktadır. Bu geçici çözümler kullanmak kendi sorumluluğunuzdadır.

Yöntem 1: (kullanılabilir .NET Framework'ün tüm sürümleri için) kayıt defteri anahtarlarını güncelleyin

SCH_SEND_AUX_RECORD yapısı (Genel) devre dışı bırakma

SCH_SEND_AUX_RECORD yapısı tek tek uygulamalar için devre dışı bırakma

SCH_SEND_AUX_RECORD yapısı (Genel) devre dışı bırakma

Tüm uygulamalar için aşağıdaki kayıt defteri alt anahtarını ekleyin:

Kayıt defteri konumu: HKEY_LOCAL_MACHINE\Software\Microsoft\. < Version_number > NETFramework\
DWORD adı: SchSendAuxRecord
Veri değeri: 0
Not: V4.0.30319 veya sürümüne bağlı olarak, v2.0.50727 < version_number > ifade etmektedir.

64 bit bilgisayarlarda çalışan 32 bitlik uygulamalar için de aşağıdaki kayıt defteri alt anahtarını ekleyin:

Kayıt defteri konumu: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\. < Version_number > NETFramework\
DWORD adı: SchSendAuxRecord
Veri değeri: 0
Not: V4.0.30319 veya sürümüne bağlı olarak, v2.0.50727 < version_number > ifade etmektedir.

Geçici çözüm

Geçici olarak bu makalede açıklanan güvenli modu devre dışı bırakmak için .reg dosyasını karşıdan yüklemek için uygun bağlantıyı tıklatın ve sonra kayıt defteri değişiklikleri yapmak için karşıdan yüklenen .reg dosyasını çift tıklatın.

Microsoft .NET Framework 3.5 hedefleyen uygulamalar için:

Download ManualOptOutSchSendAuxRecord20.reg dosyasını şimdi karşıdan yükleyin.
Uygulamalar için Microsoft .NET Framework 4.0 ve sonraki sürümlerinde hedefleme:

Download ManualOptOutSchSendAuxRecord40.reg dosyasını şimdi karşıdan yükleyin.
Bu makalede açıklanan güvenli modda yeniden etkinleştirmek için .reg dosyasını karşıdan yüklemek için uygun bağlantıyı tıklatın ve sonra kayıt defteri değişiklikleri yapmak için karşıdan yüklenen .reg dosyasını çift tıklatın.

Microsoft .NET Framework 3.5 hedefleyen uygulamalar için:

Download ManualOptInSchSendAuxRecord20.reg dosyasını şimdi karşıdan yükleyin.
Uygulamalar için Microsoft .NET Framework 4.0 ve sonraki sürümlerinde hedefleme:

Download ManualOptInSchSendAuxRecord40.reg dosyasını şimdi karşıdan yükleyin.
Microsoft Destek dosyalarını indirme hakkında daha fazla bilgi edinmek için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

119591 Microsoft destek dosyaları Çevrimiçi Hizmetler'den nasılMicrosoft bu dosyada virüs taraması yapmıştır. Microsoft, dosyanın gönderildiği tarihte kullanılabilir en güncel virüs tarama yazılımını kullanmıştır. Dosya, üzerinde herhangi bir yetkisiz değişiklik yapılmasını engellemeye yardımcı olan geliştirilmiş güvenliğe sahip sunucularda depolanır.


SCH_SEND_AUX_RECORD yapısı tek tek uygulamalar için devre dışı bırakma

Tüm uygulamalar için aşağıdaki kayıt defteri alt anahtarını ekleyin:

Kayıt defteri konumu: HKEY_LOCAL_MACHINE\Software\Microsoft\. < Version_number > NETFramework\ \System.Net.ServicePointManager.SchSendAuxRecord
DWORD adı: Tam yolu (örneğin, C:\MyApp\MyApp.exe) .exe uygulama
Veri değeri: 0
Not: V4.0.30319 veya sürümüne bağlı olarak, v2.0.50727 < version_number > ifade etmektedir.

64 bit bilgisayarlarda çalışan 32 bitlik uygulamalar için de aşağıdaki kayıt defteri alt anahtarını ekleyin:

Kayıt defteri konumu: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\. < Version_number > NETFramework\ \System.Net.ServicePointManager.SchSendAuxRecord
DWORD adı: Tam yolu (örneğin, C:\MyApp\MyApp.exe) .exe uygulama
Değer verisi: 0 (yalnızca geçerli değeri 0' dır. Başka bir değer göz ardı edilir.)
Not: V4.0.30319 veya sürümüne bağlı olarak, v2.0.50727 < version_number > ifade etmektedir.

Yöntem 2: uygulama düzeyinde (yalnızca .NET Framework sürüm 4.6 ve sonraki sürümler için kullanılabilir) yapılandırmasını değiştirme

.NET Framework 4.6 ile başlayarak, kod veya uygulama yapılandırma veya kayıt defteri değişiklikleri aracılığıyla bir uygulama düzeyinde yapılandırmasını değiştirebilirsiniz.

.NET Framework 4.6 aşağıdaki yöntemlerden birini kullanarak anahtarı ayarlayabilirsiniz. Bu örnekler güvenlik özelliğini devre dışı bırakın.

  • Program aracılığıyla

    Uygulama yapmanız gereken ilk şey, aşağıdaki kod çalıştırılır. Hizmet Noktası Yöneticisi yalnızca bir kez başlatmak çünkü.

    private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchSendAuxRecordName = @"Switch.System.Net.DontEnableSchSendAuxRecord"; 
    AppContext.SetSwitch(DisableCachingName, true);
    AppContext.SetSwitch(DontEnableSchSendAuxRecordName , true);
  • Uygulama yapılandırması

    Uygulama yapılandırmasını değiştirmek için aşağıdaki girdiyi ekleyin:

    <runtime><AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchSendAuxRecord=true"/>
    </runtime>
  • Kayıt defteri anahtarı (genel bilgisayar)

    Kayıt defteri konumları: HKEY_LOCAL_MACHINE\Software\Microsoft\. NETFramework\AppContextHKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\. NETFramework\AppContext
    Değeri: Switch.System.Net.DontEnableSchSendAuxRecord
    Türü: Dize
    Değeri: Doğru

    Not: Switch.System.Net.DontEnableSchSendAuxRecord = False tüm uygulamalar için.

Daha fazla bilgi

Aşağıda bir örnek istemci/sunucu iletişim önce ve bu güncelleştirme yüklendikten sonra desendir. Resimde herhangi bir uygulama arıza nedeniyle bu düzeltme yüklemesini tanımlamak için bu bilgileri sağlar.

Azaltıcı etken

İle azaltma

[Sunucu] (127.0.0.1:4431) bağlantılar için bekleniyor
[Client] Localhost:4431 için bağlanma
[Sunucu] İstemci bağlı.
[Client] Bağlı. Kimlik doğrulanıyor...
[Sunucu] İstemci kimlik doğrulaması.
[Client] Gönderme isteği (94 baytı)
[Client] Yanıt bekleniyor...

[Sunucu] 94 baytı aldı: <<< Al / HTTP/1.0
Host: contoso.com
User-Agent: sınama uygulaması

>>>
[Sunucu] 476 bayt ile yanıtladı.

[İstemci 1: 476 bayt] Yanıt: <<<<< HTTP/1.1 200 Tamam

>>>>>

[Sunucu] (127.0.0.1:4431) bağlantılar için bekleniyor
[Client] Localhost:4431 için bağlanma
[Sunucu] İstemci bağlı.
[Client] Bağlı. Kimlik doğrulanıyor...
[Sunucu] İstemci kimlik doğrulaması.
[Client] Gönderme isteği (94 baytı)
[Client] Yanıt bekleniyor...
[Sunucu] 1 bayt alındı: <<< G >>>
[Sunucu] 93 bayt alındı: <<< ET / HTTP/1.0
Host: contoso.com
User-Agent: sınama uygulaması

>>>
[Sunucu] 476 bayt ile yanıtladı.
[İstemci 1: 1 bayt] Yanıt: <<<<< H >>>>>
[İstemci 2: 475 bayt] Yanıt: <<<<< HTTP'yi/1.1 200 Tamam

>>>>>


Daha fazla yardıma mı ihtiyacınız var?

Yeteneklerinizi geliştirin
Eğitimleri keşfedin
Yeni özellikleri ilk olarak siz edinin
Microsoft Insider 'a katılın

Bu bilgi yardımcı oldu mu?

Çeviri kalitesinden ne kadar memnunsunuz?

Deneyiminizi ne etkiledi?

Başka geri bildirim göndermek istiyor musunuz? (İsteğe bağlı)

Geri bildiriminiz için teşekkür ederiz!

×