Aracılığıyla paylaş


TLS 1.0 Sorununu Çözme, 2. Sürüm

Bu belge, Microsoft işletim sistemlerinin üzerine kurulu yazılımlarda Aktarım Katmanı Güvenliği (TLS) protokolü sürüm 1.0 bağımlılıklarını hızla belirleme ve kaldırmaya ilişkin en son yönergeleri sunar ve kendi müşterilerinizi ve çevrimiçi hizmetlerinizi korumak için Microsoft tarafından sunulan ürün değişiklikleri ve yeni özelliklerle ilgili ayrıntıları içerir. TlS 1.2+ ağ ortamına geçiş planı oluşturmak için başlangıç noktası olarak kullanılması amaçlanmıştır. Burada açıklanan çözümler, Microsoft dışı işletim sistemlerinde veya şifreleme kitaplıklarında TLS 1.0 kullanımını kaldırmaya yardımcı olabilir ve bu belgenin odak noktası değildir.

TLS 1.0, ilk olarak 1999'da bilgisayar ağları üzerinden şifreleme kanalları oluşturmak için tanımlanan bir güvenlik protokolüdür. Microsoft, Windows XP/Server 2003'ten bu yana bu protokolü desteklemiştir. Artık modern işletim sistemleri tarafından kullanılan varsayılan güvenlik protokolü olmasa da, geriye dönük uyumluluk için TLS 1.0 hala desteklenmektedir. TlS 1.0'daki yeni güvenlik açıklarının yanı sıra değişen mevzuat gereksinimleri, kuruluşlara TLS 1.0'ı tamamen devre dışı bırakma teşviki sağlar.

Microsoft, müşterilerin ortamlarındaki TLS 1.0 bağımlılıklarını kaldırarak ve mümkün olduğunda tls 1.0'ı işletim sistemi düzeyinde devre dışı bırakarak bu sorunun önüne geçmelerini önerir. TLS 1.0'ın yazılım sektörü tarafından desteklendiği süre göz önüne alındığında, tüm TLS 1.0 kullanımdan kaldırma planlarının aşağıdakileri içermesi kesinlikle önerilir:

  • TLS 1.0 veya daha eski güvenlik protokollerinin sabit kodlanmış örneklerini bulmak/düzeltmek için kod analizi.

  • TLS 1.0 veya daha eski protokolleri kullanan işletim sistemlerini tanımlamak için ağ uç noktası taraması ve trafik analizi.

  • TLS 1.0 devre dışı bırakılmış şekilde uygulama yığınınızın tamamında tam regresyon testi.

  • Eski işletim sistemlerinin ve geliştirme kitaplıklarının/çerçevelerinin varsayılan olarak TLS 1.2 anlaşması yapabilen sürümlere geçirilmesi.

  • TLS 1.2 destek sorunlarını belirlemek için işletmeniz tarafından kullanılan işletim sistemleri arasında uyumluluk testi.

  • TLS 1.0'ı kullanım dışı bırakma hamlenizi onlara bildirmek için kendi iş ortaklarınız ve müşterilerinizle koordinasyon.

  • TLS 1.0 devre dışı bırakıldıktan sonra sunucularınıza hangi istemcilerin bağlanamayacağını anlama.

Bu belgenin amacı, TLS 1.0'ı devre dışı bırakmak için teknik engelleyicileri kaldırmaya yardımcı olabilecek öneriler sunmak ve aynı zamanda bu değişikliğin kendi müşterileriniz üzerindeki etkisine ilişkin görünürlüğü artırmaktır. Bu tür araştırmaların tamamlanması TLS 1.0'daki bir sonraki güvenlik açığının iş üzerindeki etkisini azaltmaya yardımcı olabilir. Bu belgenin amaçları doğrultusunda TLS 1.0'ın kullanımdan kaldırılmasına yönelik başvurular da TLS 1.1'i içerir.

Kurumsal yazılım geliştiricilerinin, gelecekteki güvenlik protokolü riskleriyle başa çıkmak için gelecekte daha güvenli ve çevik çözümler (şifreleme çevikliği olarak da bilinir) benimsemeleri için stratejik bir ihtiyacı vardır. Bu belge TLS sabit kodlamanın ortadan kaldırılmasına yönelik çevik çözümler önerse de, daha geniş Şifreleme Çevikliği çözümleri bu belgenin kapsamının dışındadır.

Microsoft'un TLS 1.0 uygulamasının Geçerli Durumu

Microsoft'un TLS 1.0 uygulaması bilinen güvenlik açıklarından arındı. Gelecekteki protokol düşürme saldırıları ve Microsoft'un uygulamasına özgü olmayan diğer TLS 1.0 güvenlik açıkları nedeniyle, TLS 1.2'den eski tüm güvenlik protokollerindeki bağımlılıkların mümkün olduğunca kaldırılması önerilir (TLS 1.1/1.0/ SSLv3/SSLv2).

TlS 1.2+ sürümüne bu geçişin planlanmasında geliştiriciler ve sistem yöneticileri, çalışanları ve iş ortakları tarafından geliştirilen uygulamalarda protokol sürümü sabit kodlama potansiyelinin farkında olmalıdır. Burada sabit kodlama, TLS sürümünün eski ve daha yeni sürümlerden daha az güvenli olan bir sürüme sabitlenmiş olduğu anlamına gelir. Sabit kodlanmış sürümden daha yeni TLS sürümleri, söz konusu program değiştirilmeden kullanılamaz. Bu sorun sınıfı, kaynak kodu değişiklikleri ve yazılım güncelleştirme dağıtımı olmadan giderilemez. Protokol sürümü sabit kodlaması geçmişte birçok farklı tarayıcı ve işletim sisteminin farklı TLS desteği düzeylerine sahip olduğu için test ve desteklenebilirlik amacıyla yaygın olarak kullanılıyordu.

Windows'da DESTEKLENEN TLS sürümleri

Birçok işletim sisteminde eski TLS sürümü varsayılanları veya hesaba katılması gereken destek tavanları vardır.

Şekil 1: İşletim Sistemi Sürümüne Göre Güvenlik Protokolü Desteği

Windows işletim sistemi SSLv2 SSLv3 TLS 1.0 TLS 1.1 TLS 1.2 TLS 1.3
Windows Vista Enabled Enabled Enabled Desteklenmiyor Desteklenmiyor Desteklenmiyor
Windows Server 2008 Enabled Enabled Enabled Devre dışı* Devre dışı* Desteklenmiyor
Windows 7 (WS2008 R2) Enabled Enabled Enabled Devre dışı* Devre dışı* Desteklenmiyor
Windows 8 (WS2012) Disabled Enabled Enabled Enabled Enabled Desteklenmiyor
Windows 8.1 (WS2012 R2) Disabled Enabled Enabled Enabled Enabled Desteklenmiyor
Windows 10 Disabled Enabled Enabled Enabled Enabled Desteklenmiyor
Windows 11 Disabled Enabled Enabled Enabled Enabled Enabled
Windows Server 2016 Desteklenmiyor Disabled Enabled Enabled Enabled Desteklenmiyor
Windows Server 2016 Desteklenmiyor Disabled Enabled Enabled Enabled Desteklenmiyor
Windows Server 2019 Desteklenmiyor Disabled Enabled Enabled Enabled Desteklenmiyor
Windows Server 2019 GS sürümü Desteklenmiyor Disabled Disabled Disabled Enabled Desteklenmiyor
Windows Server 2022 Desteklenmiyor Disabled Disabled Disabled Enabled Enabled

Windows Server 2019 GS sürümü Microsoft SDL uyumlu, TLS 1.2 yalnızca kısıtlı bir şifre paketleri kümesiyle.

Windows Server 2022 sürümü Microsoft SDL uyumlu, TLS 1.2 ve TLS 1.3 yalnızca kısıtlı şifreleme paketleri kümesine sahiptir.

TLS 1.1/1.2, bu isteğe bağlı Windows Update paketi aracılığıyla Windows Server 2008'de etkinleştirilebilir.

IE/Edge'de TLS 1.0/1.1'in kullanımdan kaldırılması hakkında daha fazla bilgi için bkz. Microsoft Edge ve Internet Explorer 11'de TLS bağlantılarını modernleştirme, Microsoft Edge'e gelen site uyumluluğunu etkileyen değişiklikler ve yeni Edge Tarayıcısında TLS/1.0 ve TLS/1.1'i Devre Dışı Bırakma

Çevrimiçi hizmetlerinize bağlanırken çeşitli istemciler tarafından hangi TLS sürümünün isteneceğini belirlemenin hızlı bir yolu , Qualys SSL Labs'deki El Sıkışma Benzetimi'ne başvurmaktır. Bu simülasyon, üreticiler genelinde istemci işletim sistemi/tarayıcı kombinasyonlarını kapsar. www.microsoft.combağlanırken çeşitli sanal istemci işletim sistemi/tarayıcı bileşimleri tarafından anlaşılan TLS protokolü sürümlerini gösteren ayrıntılı bir örnek için bu belgenin sonundaki Ek A'ya bakın.

Henüz tamamlanmamışsa, kuruluşunuz, müşterileriniz ve iş ortaklarınız tarafından kullanılan işletim sistemlerinin bir envanterini (son ikisi de yardım/iletişim veya en azından HTTP User-Agent dize koleksiyonu aracılığıyla) yürütmeniz kesinlikle önerilir. Bu envanter, kurumsal ağ uçunuzda trafik analiziyle daha da desteklenebilir. Böyle bir durumda, trafik analizi hizmetlerinize bağlanan müşteriler/iş ortakları tarafından başarıyla görüşülen TLS sürümlerini verir, ancak trafiğin kendisi şifrelenmiş olarak kalır.

Microsoft'un TLS 1.0 bağımlılıklarını ortadan kaldırmaya yönelik Mühendislik Geliştirmeleri

Bu belgenin v1 sürümünden bu yana Microsoft, TLS 1.0'ın kullanımdan kaldırılmasını destekleyen bir dizi yazılım güncelleştirmesi ve yeni özellik gönderdi. Bunlar şunları içerir:

  • IIS özel kaydı, istemci IP/kullanıcı aracısı dizesi, hizmet URI'si, TLS protokol sürümü ve şifreleme paketi ile ilişkilendirmek için kullanılır.

    • Bu günlük kaydıyla yöneticiler sonunda müşterilerinin zayıf TLS'ye maruz kalma durumunu ölçebilir.
  • SecureScore - Office 365 kiracı yöneticilerinin kendi zayıf TLS kullanımını belirlemelerine yardımcı olmak için SecureScore portalı, Ekim 2018'de Office 365'te TLS 1.0 desteğinden çıkıldığı için bu bilgileri paylaşacak şekilde oluşturulmuş.

    • Bu portal, Office 365 kiracı yöneticilerine kendi TLS 1.0 bağımlılıklarından habersiz olabilecek kendi müşterilerine ulaşmak için ihtiyaç duydukları değerli bilgileri sağlar.

    • Daha fazla bilgi için lütfen https://securescore.microsoft.com/ ziyaret edin.

  • Uygulama düzeyinde sabit kodlamayı ortadan kaldırmak ve çerçeve devralınan TLS 1.0 bağımlılıklarını önlemek için .Net Framework güncelleştirmeleri.

  • Müşterilerin zayıf TLS'ye yönelik .Net bağımlılıklarını tanımlamalarına ve ortadan kaldırmalarına yardımcı olmak için Geliştirici Kılavuzu ve yazılım güncelleştirmeleri yayımlandı: .NET Framework ile Aktarım Katmanı Güvenliği (TLS) en iyi yöntemleri

    • Bilgi: TLS 1.2'yi desteklemek için .NET 4.5 veya üzerini hedefleyen tüm uygulamaların değiştirilmesi gerekecek.
  • TLS 1.2, eski yükümlülükleri olan müşterilere yardımcı olmak için Windows Server 2008 SP2 ve XP POSReady 2009'a geri aktarıldı.

  • 2019'un başlarında daha fazla duyuru yapılacak ve bu belgenin sonraki güncelleştirmelerinde iletilecektir.

Kodda TLS 1.0 bağımlılıklarını bulma ve düzeltme

Windows işletim sistemi tarafından sağlanan şifreleme kitaplıklarını ve güvenlik protokollerini kullanan ürünler için, aşağıdaki adımlar uygulamalarınızdaki sabit kodlanmış TLS 1.0 kullanımını belirlemeye yardımcı olmalıdır:

  1. AcquireCredentialsHandle() öğesinin tüm örneklerini tanımlayın. Bu, gözden geçirenlerin TLS'nin sabit kodlanmış olabileceği kod bloklarına daha yakın olmasını sağlar.

  2. Sabit kodlanmış TLS için SecPkgContext_SupportedProtocols ve SecPkgContext_ConnectionInfo yapılarının örneklerini gözden geçirin.

  3. Yerel kodda grbitEnabledProtocols için sıfır olmayan tüm atamaları sıfır olarak ayarlayın. Bu, işletim sisteminin varsayılan TLS sürümünü kullanmasına olanak tanır.

  4. FIPS Modu etkinse ve bu belgede TLS 1.0/1.1'i açıkça devre dışı bırakmak için gereken ayarlarla çakışma olasılığı varsa, onu devre dışı bırakın. Daha fazla bilgi için bkz. Ek B .

  5. Server 2012 veya daha eski bir sürümünün üzerinde barındırılan WinHTTP kullanarak tüm uygulamaları güncelleştirin ve yeniden derleyin.

    1. Yönetilen uygulamalar – en son .NET Framework sürümüne göre yeniden derleme ve yeniden hedefleme

    2. Uygulamaların WinHttpSetOption aracılığıyla TLS 1.2'yi desteklemek için kod eklemesi gerekir

  6. Tüm temelleri kapsayacak şekilde, TLS sabit kodlamada yaygın olarak kullanılan numaralandırılmış tür değerlerine karşılık gelen aşağıdaki desenler için kaynak kodu ve çevrimiçi hizmet yapılandırma dosyalarını tarayın:

    1. GüvenlikProtokolTürü

    2. SSLv2, SSLv23, SSLv3, TLS1, TLS 10, TLS11

    3. WINHTTP_FLAG_SECURE_PROTOCOL_

    4. SP_PROT_

    5. NSStreamSocketSecurityLevel

    6. PROTOCOL_SSL veya PROTOCOL_TLS

Yukarıdaki her durumda önerilen çözüm, sabit kodlanmış protokol sürümü seçimini kaldırmak ve işletim sistemi varsayılanı olarak ertelemektir. DevSkim kullanıyorsanız, kendi kodunuzla kullanabileceğiniz yukarıdaki denetimleri kapsayan kuralları görmek için buraya tıklayın.

Windows PowerShell, kullanılabilir bir protokol olarak TLS 1.2 içermeyen .NET Framework 4.5'i kullanır. Bu sorunu geçici olarak çözmek için iki çözüm sağlanır:

  1. Söz konusu betiği aşağıdakileri içerecek şekilde değiştirin:

    [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;
    
  2. .NET uygulamasından TLS 1.2 bağlantıları yapması gereken herhangi bir makineye sistem genelinde bir kayıt defteri anahtarı (örneğin, grup ilkesi aracılığıyla) ekleyin. Bu, .NET'in TLS 1.2'yi kullanılabilir bir protokol olarak ekleyen "Sistem Varsayılanı" TLS sürümlerini kullanmasına neden olur ve işletim sistemi bunları desteklediğinde betiklerin gelecekteki TLS Sürümlerini kullanmasına izin verir. (ör. TLS 1.3)

    reg add HKLM\SOFTWARE\Microsoft.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:64

    reg add HKLM\SOFTWARE\Microsoft.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:32

Çözümler (1) ve (2) birbirini dışlar, yani birlikte uygulanmaları gerekmez.

En son .Net Framework sürümünü kullanarak yönetilen uygulamaları yeniden derleme/yeniden hedefleme

4.7'den önceki .NET framework sürümlerini kullanan uygulamalar, temel işletim sistemi varsayılanlarından bağımsız olarak TLS 1.0 desteği ile sınırlı kalabilir. Daha fazla bilgi için aşağıdaki diyagrama ve .NET Framework ile Aktarım Katmanı Güvenliği (TLS) en iyi yöntemlerine bakın.

Yönetilen uygulamaları yeniden oluşturma

SystemDefaultTLSVersion, TLS sürümlerinin uygulama düzeyinde hedeflenmesinden önceliklidir. Önerilen en iyi yöntem, her zaman işletim sistemi varsayılan TLS sürümüne ertelemektir. Ayrıca uygulamalarınızın gelecekteki TLS 1.3 desteğinden yararlanmasını sağlayan tek şifreleme çevik çözümüdür.

.NET Framework'ün 4.5.2 veya 3.5 gibi eski sürümlerini hedef alıyorsanız, uygulamanız varsayılan olarak SSL 3.0 veya TLS 1.0 gibi önerilen ve eski protokolleri kullanır. .NET Framework 4.6 gibi daha yeni .NET Framework sürümlerine yükseltmeniz veya 'UseStrongCrypto' için uygun kayıt defteri anahtarlarını ayarlamanız kesinlikle önerilir.

TLS 1.2+ ile test etme

Yukarıdaki bölümde önerilen düzeltmelerin ardından, ürünlerin protokol anlaşması hataları ve kuruluşunuzdaki diğer işletim sistemleriyle uyumluluk açısından regresyon testi yapılması gerekir.

  • Bu regresyon testindeki en yaygın sorun, TLS 1.2'yi desteklemeyen bir işletim sisteminden veya tarayıcıdan istemci bağlantısı girişimi nedeniyle TLS anlaşması hatası olacaktır.

    • Örneğin, Vista istemcisi TLS 1.2+ için yapılandırılmış bir sunucuyla TLS anlaşması yapmayacaktır çünkü Vista'nın desteklenen en yüksek TLS sürümü 1.0'dır. Bu istemci bir TLS 1.2+ ortamında yükseltilmeli veya kullanımdan kaldırılmalıdır.
  • Sertifika tabanlı Karşılıklı TLS kimlik doğrulaması kullanan ürünler, TLS 1.0 ile ilişkili sertifika seçim kodunun, TLS 1.2'ye kıyasla daha az ifade edici olması nedeniyle ek regresyon testi gerektirebilir.

    • Bir ürün, standart olmayan bir konumdan (Windows'daki standart adlandırılmış sertifika depolarının dışında) bir sertifikayla MTLS anlaşması yaparsanız, sertifikanın doğru şekilde alındığından emin olmak için bu kodun güncelleştirilmesi gerekebilir.
  • Hizmet bağımlılıkları, sorun noktaları için gözden geçirilmelidir.

    • Üçüncü taraf hizmetleriyle birlikte çalışabilen tüm hizmetler, bu üçüncü taraflarla ek birlikte çalışma testleri gerçekleştirmelidir.

    • Kullanımda olan Windows dışı uygulamalar veya sunucu işletim sistemleri, TLS 1.2'i destekleyebileceklerine ilişkin araştırma /onay gerektirir. Tarama, bunu belirlemenin en kolay yoludur.

Bu değişiklikleri çevrimiçi bir hizmette test için basit bir şema aşağıdakilerden oluşur:

  1. TLS 1.2'yi desteklemeyen işletim sistemlerini belirlemek için üretim ortamı sistemlerini tarayın.

  2. "Kodda TLS 1.0 bağımlılıklarını bulma ve düzeltme" bölümünde açıklandığı gibi kaynak kodu ve çevrimiçi hizmet yapılandırma dosyalarını sabit kodlanmış TLS için tarayın

  3. Uygulamaları gerektiği gibi güncelleştirin/yeniden derleyin:

    1. Yönetilen uygulamalar

      1. En son .NET Framework sürümüne göre yeniden derleyin.

      2. İşletim sistemi varsayılan ayarlarını kullanmak için SSLProtocols sabit listesi kullanımının SSLProtocols.None olarak ayarlandığını doğrulayın.

    2. WinHTTP uygulamaları – TLS 1.2'yi desteklemek için WinHttpSetOption ile yeniden derleme

  4. Ön üretim veya hazırlık ortamında TLS 1.2'den eski tüm güvenlik protokolleri kayıt defteri aracılığıyla devre dışı bırakılarak test etmeye başlayın.

  5. Test sırasında karşılaşılan kalan TLS sabit kodlama örneklerini düzeltin. Yazılımı yeniden dağıtın ve yeni bir regresyon testi çalıştırması gerçekleştirin.

TLS 1.0 kullanımdan kaldırma planlarınızı iş ortaklarına bildirme

TLS sabit kodlaması giderildikten ve işletim sistemi/geliştirme çerçevesi güncelleştirmeleri tamamlandıktan sonra TLS 1.0'ı kullanımdan kaldırmayı tercih etmeniz durumunda müşteriler ve iş ortaklarıyla işbirliği yapmak gerekir:

  • Başarılı bir TLS 1.0 kullanımdan kaldırma dağıtımı için erken iş ortağı/müşteri dağıtımı gereklidir. En azından bu, blog gönderilerinden, teknik incelemelerden veya diğer web içeriklerinden oluşmalıdır.

  • İş ortaklarının her birinin, yukarıdaki bölümlerde açıklanan işletim sistemi/kod tarama/regresyon testi girişimleri aracılığıyla kendi TLS 1.2 hazırlığını değerlendirmesi gerekir.

Sonuç

TLS 1.0 bağımlılıklarını kaldırmak, baştan sona yönetilmesi gereken karmaşık bir sorundur. Microsoft ve sektör iş ortakları, işletim sistemi bileşenlerimiz ve geliştirme çerçevelerimizden bunların üzerine kurulan uygulamalara/hizmetlere kadar tüm ürün yığınımızın varsayılan olarak daha güvenli olmasını sağlamak için bu konuda harekete geçmektedir. Bu belgede yapılan önerilerin takip etmek, kuruluşunuzun doğru rotayı seçmesine ve ne gibi zorluklarla karşılaşacağını bilmesine yardımcı olur. Ayrıca kendi müşterilerinizin geçişe daha hazırlıklı olmasına da yardımcı olur.

Ek A: Çeşitli istemcilerin www.microsoft.com ile bağlantı kurması için El Sıkışma Simülasyonu, SSLLabs.com sayesinde

El Sıkışma Simülasyonu Sonuçları

Ek B: FIPS Modu korunurken TLS 1.0/1.1 kullanımdan kaldırılıyor

Ağınız FIPS Modu gerektiriyorsa ancak TLS 1.0/1.1'in kullanımdan kaldırılmasını istiyorsanız aşağıdaki adımları izleyin:

  1. İstenmeyen TLS sürümleri için "Etkin" ayarını sıfır olarak ayarlayarak , kayıt defteri aracılığıyla TLS sürümlerini yapılandırın.

  2. Grup İlkesi aracılığıyla Eğri 25519'u (yalnızca Windows Sunucu 2016) devre dışı bırakın.

  3. İlgili FIPS yayını tarafından izin verilmeyen algoritmaları kullanarak tüm şifreleme paketlerini devre dışı bırakın. Sunucu 2016 için (varsayılan ayarların etkin olduğu varsayılarak) bu, RC4, PSK ve NULL şifrelemelerini devre dışı bırakmak anlamına gelir.

Katkıda Bulunanlar/Teşekkürler

Mark Cartwright
Bryan Sullivan
Patrick Jungles
Michael Scovetta
Tony Rice
David LeBlanc
Mortimer Cook
Daniel Sommerfeld
Andrei Popov
Michiko Short
Justin Burke
Gov Maharaj
Brad Turner
Sean Stevenson