Ö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çığı |
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:
ManualOptOutSchSendAuxRecord20.reg dosyasını şimdi karşıdan yükleyin.
Uygulamalar için Microsoft .NET Framework 4.0 ve sonraki sürümlerinde hedefleme:
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:
ManualOptInSchSendAuxRecord20.reg dosyasını şimdi karşıdan yükleyin.
Uygulamalar için Microsoft .NET Framework 4.0 ve sonraki sürümlerinde hedefleme:
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 |
[Sunucu] (127.0.0.1:4431) bağlantılar için bekleniyor |