Genel Bakış
Bir SSL/TLS sertifikası, açık anahtarı bir veya daha fazla alan adına bağlayarak sunucunun kimliğini doğrular. Tarayıcılar ve TLS istemcileri, URL'deki ana makine adının sertifikanın Subject Alternative Name (SAN) uzantısında ya da eski sertifikalar için Common Name (CN) alanında listelenen bir adla eşleşip eşleşmediğini denetler. Herhangi bir eşleşme bulunamazsa ana makine doğrulaması başarısız olur.
RFC 6125, TLS'de ana makine adı doğrulama için yetkili kuralları tanımlamaktadır. 2017'den itibaren Chrome, Firefox ve Safari gibi büyük tarayıcılar ile RFC 2818, SAN uzantısını zorunlu kılmaktadır; modern istemcilerde artık tek başına CN alanı yeterli değildir. Sensagraph, TLS sertifika incelemesi sırasında ana makine adı uyuşmazlıklarını otomatik olarak tespit eder.
Nasıl Çalışır?
TLS el sıkışması sırasında sunucu sertifika zincirini sunar. İstemci ardından ana makine adı doğrulamasını gerçekleştirir:
- İstemci, SAN uzantısındaki tüm
dNSNamegirişlerini (ve IP tabanlı erişim içiniPAddressgirişlerini) çıkarır. - Her giriş, tam eşleşme veya joker eşleşme (RFC 6125 §6.4.3 uyarınca tek bir baştaki
*.etiketi) kullanılarak istenen ana makine adıyla karşılaştırılır. - Hiçbir SAN girişi eşleşmezse bağlantı reddedilir (ya da izin veren/yanlış yapılandırılmış istemcilerde uyarıyla kabul edilir).
Uyuşmazlığa yol açan yaygın senaryolar:
- Yanlış sertifika yayımlanması:
example.comiçin verilen sertifika, SAN'da listelenmeyenapi.example.comüzerinde sunulmaktadır. - Joker kapsam aşımı:
*.example.comiçin bir joker sertifikaapi.example.comadresini kapsar; ancakdeep.api.example.comadresini kapsamaz (jokerler yalnızca tek bir etiketi eşleştirir). - IP adresiyle erişim: Yalnızca DNS SAN içeren bir sertifika ham IP adresiyle erişildiğinde ve sertifikada
iPAddressSAN bulunmadığında uyuşmazlık oluşur. - Alan adı değişikliğinden sonra sertifikanın güncellenmemesi: Sunucu yeni bir alan adına taşındı ancak sertifika yeniden düzenlenmedi.
- Geliştirme/test sertifikasının üretim ortamında kullanılması:
dev.internaliçin tasarlanmış dahili veya öz imzalı bir sertifika yanlışlıkla kamuya açık bir ana makine adında sunulmaktadır. - Yük dengeleyici veya CDN yanlış yapılandırması: Trafik, farklı bir sanal ana makine için sertifika sunan bir arka uca yönlendirilmektedir.
İş Etkisi
Ana makine adı uyuşmazlığı, TLS'nin sağlamak üzere tasarlandığı sunucu kimliği güvencesini doğrudan ortadan kaldırır. Pratik sonuçlar şunlardır:
- Ortadaki adam (MitM) saldırısına maruz kalma: Tarayıcı uyarılarını geçen kullanıcılar veya ana makine doğrulamasını devre dışı bırakan istemciler, trafik dinleme ve kimlik bilgisi çalınma riskiyle karşı karşıyadır.
- Hizmet kesintisi: Katı istemciler (modern tarayıcılar, mobil uygulamalar, sertifika sabitleme kullanan API'ler) bağlantıyı reddederek kesintilere veya başarısız işlemlere yol açar.
- Kullanıcı güveninin zedelenmesi: Tarayıcı güvenlik uyarıları (Chrome'da NET::ERR_CERT_COMMON_NAME_INVALID, Firefox'ta SEC_ERROR_BAD_CERT_DOMAIN) son derece görünürdür ve kullanıcıların siteyi terk etmesine neden olur.
- Uyumluluk ihlalleri: PCI DSS Gereksinim 4.2.1 ve benzeri standartlar, kart sahibi veri ortamları için geçerli ve doğru kapsamlı sertifikaları zorunlu kılar. Uyuşmazlık, QSA denetimlerinde bulgu olarak kaydedilebilir.
- Otomatik süreç hataları: Sıkı TLS doğrulaması kullanan CI/CD sistemleri, sağlık denetimi ajanları ve API istemcileri başarısız olarak dağıtımları ve izleme işlemlerini aksatır.
Nasıl Düzeltilir?
- Kullanılan tüm ana makine adlarını denetleyin. İstemcilerin TLS üzerinden eriştiği her genel ve dahili ana makine adını listeleyin. Her birinin, o uç noktada sunulan sertifikanın SAN'ı tarafından kapsandığını doğrulayın.
- Sertifikayı yeniden düzenleyin veya değiştirin. CA'nızdan doğru SAN girişleriyle yeni bir sertifika edinin. Birden fazla alt alan adı için, gerekli tüm ana makine adlarını açıkça listeleyen çok SAN'lı bir sertifika ya da joker sertifika (
*.example.com) kullanın. - Otomatik sertifika yönetimini benimseyin. Manuel sertifika yaşam döngüsü hatalarını ortadan kaldırmak ve zamanında yenilemeyi sağlamak için ACME tabanlı otomasyonu (örn. Certbot ile Let's Encrypt veya web sunucularına yerleşik ACME istemcileri) devreye alın.
- İstemcilerde ana makine doğrulamasını asla devre dışı bırakmayın.
CURLOPT_SSL_VERIFYHOST=0(libcurl),verify=False(Python requests) veyacheckServerIdentity: () => undefined(Node.js) gibi bayraklar ayarlayan uygulama kodu sessiz MitM açıklarına yol açar. Bunun yerine sertifikayı düzeltin. - Gerektiğinde IP SAN'ları ekleyin. Hizmetlere IP adresiyle erişilmesi gerekiyorsa CN'e güvenmek yerine sertifikaya
iPAddressSAN girişi olarak IP'yi ekleyin. - Sertifika envanterini sürekli izleyin. Kullanıcıları etkilemeden önce uyuşmazlıkları tespit etmek için sertifika şeffaflık günlüğü izlemesini ve otomatik taramayı kullanın.
- Sorun çözüldükten sonra HSTS uygulayın. Sertifikalar doğru hale geldikten sonra, protokol düşürme saldırılarını önlemek için uygun
max-agedeğeriyle HTTP Strict Transport Security (HSTS) dağıtın.
Kaynaklar
- MITRE CWE-297: Ana Makine Uyuşmazlığıyla Sertifika Doğrulamasının Hatalı Yapılması
- OWASP Top 10 A07:2021 – Kimlik ve Kimlik Doğrulama Hataları
- RFC 6125 – Alan Adı Tabanlı Uygulama Hizmeti Kimliğinin Temsili ve Doğrulanması (IETF)
- RFC 5280 – İnternet X.509 PKI Sertifikası ve CRL Profili (IETF)
- RFC 2818 – TLS Üzerinden HTTP (IETF)
- Sertifika Şeffaflığı – MDN Web Docs
- Let's Encrypt Belgeleri – ACME Sertifika Otomasyonu