- Konu sahibi
- #1
SSL pinning, daha doğru ifadeyle TLS certificate pinning, bir uygulamanın sunucu bağlantısında yalnızca işletim sisteminin güvendiği sertifika otoritelerine bakmakla yetinmeyip beklenen sertifika veya açık anahtarla ek eşleşme kontrolü yapmasıdır. Eşleşme başarısız olursa bağlantı durdurulur. Bu yaklaşım özellikle mobil uygulamaların hassas API’lerine yönelik bazı araya girme senaryolarına karşı ek katman sağlar; ancak tek başına tüm saldırıları veya uygulamadaki diğer güvenlik açıklarını çözmez.
Normal HTTPS/TLS doğrulamasında istemci; sertifikanın süresini, alan adını, imza zincirini ve cihazdaki güvenilir kök sertifikaları kontrol eder. Sertifika bu kontrollerden geçerse bağlantı kurulabilir.
Pinning kullanıldığında uygulama bunun üzerine ikinci bir kontrol ekler. Örneğin
Varsayımsal olarak bir banka uygulaması
Sertifika pinning belirli sertifikanın kendisini eşleştirir. Açık anahtar pinning ise sertifikadaki açık anahtarın eşleşmesine bakar. Açık anahtarın kontrollü biçimde korunması, aynı anahtarla yapılan sertifika yenilemelerinde daha az değişiklik gerektirebilir; fakat anahtar değişirse yine istemci güncellemesi ve geçiş planı gerekir.
Bu tablo, pinning’in normal HTTPS’nin yerine geçmediğini gösterir. Pin değeri kontrolü, standart sertifika doğrulamasına eklenmelidir; sertifika doğrulamasını kapatıp yalnızca sabit bir değere güvenmek güvenli bir tasarım değildir.
Pinning varsayılan olarak her uygulamaya eklenmesi gereken bir özellik değildir. Kesinti riski ve bakım yükü nedeniyle önce ihtiyaç değerlendirilmelidir. İstemciyi ve sunucuyu kontrol edemiyorsanız veya pinleri güvenli biçimde güncelleyemiyorsanız bu yaklaşımı seçmeyin.
Tarayıcı tarafındaki HTTP Public Key Pinning, yani HPKP, günümüzde eski ve riskli bir yaklaşımdır. MDN bunu obsolete olarak sınıflandırır; Firefox da HPKP desteğini düşük kullanım ve birlikte çalışabilirlik riski gerekçeleriyle kaldırmıştır. Yanlış veya artık geçersiz bir pin, sertifika yenilendikten sonra sitenin kullanıcılar tarafından açılamamasına yol açabilir.
Bu nedenle web sitesi sahipleri için doğru TLS yapılandırması, HTTPS zorlaması ve sertifika yaşam döngüsünün izlenmesi genellikle daha uygun seçeneklerdir. Sertifika yanlış yayınlarını izlemek için Certificate Transparency takibi de HPKP’ye kıyasla daha düşük kesinti riski taşıyan bir yaklaşım olarak kullanılabilir.
Tek bir sertifika veya anahtar tanımlayıp yedek bırakmamak operasyonel kesinti riskini artırır. Sertifika yenilendiğinde eski uygulama sürümleri API’ye erişemeyebilir. Bir diğer hata, pin eşleşmediğinde güvenlik kontrolünü devre dışı bırakıp bağlantıyı sürdürmektir; bu davranış pinning’in amacını ortadan kaldırır.
Pin değerinin uygulama içinde bulunması da gizli anahtar saklama yöntemi değildir. Mobil uygulama analiz edilebilir; pinning’in görevi sunucunun beklenen kimlikle eşleşmesini kontrol etmektir. API yetkilendirme kusurları, çalınmış oturum bilgileri, kötü amaçlı uygulama sürümü veya ele geçirilmiş sunucu gibi sorunlar ayrıca ele alınmalıdır.
Nasıl çalışır?
Normal HTTPS/TLS doğrulamasında istemci; sertifikanın süresini, alan adını, imza zincirini ve cihazdaki güvenilir kök sertifikaları kontrol eder. Sertifika bu kontrollerden geçerse bağlantı kurulabilir.
Pinning kullanıldığında uygulama bunun üzerine ikinci bir kontrol ekler. Örneğin
api.example.com için uygulamaya önceden tanımlanmış sertifikanın veya sertifikadaki açık anahtarın özeti bulunur. Sunucu geçerli bir sertifika sunsa bile bu değer beklenen pin ile uyuşmuyorsa uygulama isteği reddeder.Varsayımsal olarak bir banka uygulaması
https://api.example.com adresine bağlansın. Cihazda ek bir güven sertifikası yüklü olan bir ağ, TLS trafiğini incelemek için farklı bir sertifika sunsa bile bu sertifika uygulamadaki pin ile eşleşmezse bağlantı kurulmaz. Ancak saldırganın uygulamayı, cihazı veya sunucuyu kontrol ettiği durumlar pinning tarafından otomatik olarak çözülmez.Sertifika mı, açık anahtar mı?
Sertifika pinning belirli sertifikanın kendisini eşleştirir. Açık anahtar pinning ise sertifikadaki açık anahtarın eşleşmesine bakar. Açık anahtarın kontrollü biçimde korunması, aynı anahtarla yapılan sertifika yenilemelerinde daha az değişiklik gerektirebilir; fakat anahtar değişirse yine istemci güncellemesi ve geçiş planı gerekir.
| Yaklaşım | Kontrol edilen değer | Başlıca sonuç |
|---|---|---|
| Sertifika pinning | Belirli sertifika | Sertifika değişiminde bağlantı kesilebilir |
| Açık anahtar pinning | Sertifikadaki açık anahtar | Anahtar değişimi dikkatli geçiş gerektirir |
| Normal HTTPS doğrulaması | TLS güven zinciri ve alan adı | Tarayıcı ve işletim sistemi güven deposuna dayanır |
Bu tablo, pinning’in normal HTTPS’nin yerine geçmediğini gösterir. Pin değeri kontrolü, standart sertifika doğrulamasına eklenmelidir; sertifika doğrulamasını kapatıp yalnızca sabit bir değere güvenmek güvenli bir tasarım değildir.
Pinning varsayılan olarak her uygulamaya eklenmesi gereken bir özellik değildir. Kesinti riski ve bakım yükü nedeniyle önce ihtiyaç değerlendirilmelidir. İstemciyi ve sunucuyu kontrol edemiyorsanız veya pinleri güvenli biçimde güncelleyemiyorsanız bu yaklaşımı seçmeyin.
Uygularken izlenecek yol
- Tehdit modelini belirleyin. Hassas veri taşıyan bir mobil uygulamada pinning’in sağlayacağı ek faydayı, bakım ve kurtarma maliyetiyle birlikte değerlendirin. Sıradan bir web sitesi için tarayıcıya pin yerleştirmeye çalışmayın.
- Pin türünü seçin. Sertifika veya açık anahtar pinlemesini, sertifika ve anahtar yenileme sürecinizle uyumlu olacak şekilde tasarlayın. Üretim ve test değerlerini karıştırmayın.
- Yedek pin planlayın. Mevcut değerin yanında kontrollü geçişte kullanılacak yedek değeri uygulama sürümlerinde önceden desteklemek, yenileme sırasında erişim kesintisi riskini azaltır.
- Başarısız eşleşmede bağlantıyı durdurun. Pin kontrolü başarısız olduğunda sertifika doğrulamasını kapatıp isteği devam ettirmeyin. Kullanıcıya genel bir bağlantı hatası gösterin; hassas sertifika ayrıntılarını herkese açık loglara yazmayın.
- Yenileme senaryosunu test edin. Yeni sertifikayı veya anahtarı üretime almadan önce eski ve yeni istemci sürümlerinin planlanan geçişte nasıl davranacağını test ortamında doğrulayın.
- Kurtarma planı oluşturun. Yanlış pin dağıtılırsa yeni uygulama sürümü yayınlanana kadar hangi sunucu değerinin kullanılacağı ve eski istemcilerin nasıl yönetileceği önceden belirlenmiş olmalıdır.
Web sitelerinde neden dikkatli olunmalı?
Tarayıcı tarafındaki HTTP Public Key Pinning, yani HPKP, günümüzde eski ve riskli bir yaklaşımdır. MDN bunu obsolete olarak sınıflandırır; Firefox da HPKP desteğini düşük kullanım ve birlikte çalışabilirlik riski gerekçeleriyle kaldırmıştır. Yanlış veya artık geçersiz bir pin, sertifika yenilendikten sonra sitenin kullanıcılar tarafından açılamamasına yol açabilir.
Bu nedenle web sitesi sahipleri için doğru TLS yapılandırması, HTTPS zorlaması ve sertifika yaşam döngüsünün izlenmesi genellikle daha uygun seçeneklerdir. Sertifika yanlış yayınlarını izlemek için Certificate Transparency takibi de HPKP’ye kıyasla daha düşük kesinti riski taşıyan bir yaklaşım olarak kullanılabilir.
Sık yapılan hatalar
Tek bir sertifika veya anahtar tanımlayıp yedek bırakmamak operasyonel kesinti riskini artırır. Sertifika yenilendiğinde eski uygulama sürümleri API’ye erişemeyebilir. Bir diğer hata, pin eşleşmediğinde güvenlik kontrolünü devre dışı bırakıp bağlantıyı sürdürmektir; bu davranış pinning’in amacını ortadan kaldırır.
Pin değerinin uygulama içinde bulunması da gizli anahtar saklama yöntemi değildir. Mobil uygulama analiz edilebilir; pinning’in görevi sunucunun beklenen kimlikle eşleşmesini kontrol etmektir. API yetkilendirme kusurları, çalınmış oturum bilgileri, kötü amaçlı uygulama sürümü veya ele geçirilmiş sunucu gibi sorunlar ayrıca ele alınmalıdır.
Sık sorulan sorular
Certificate Transparency izleme pinning ile aynı korumayı sağlar mı?
Hayır. Certificate Transparency izleme, alan adınız için düzenlenen sertifikaları fark etmenize yardımcı olur; istemcinin bağlantıyı kabul etme kararına pin eşleşmesi gibi doğrudan bir koşul eklemez. İzleme ve bağlantıyı engelleme farklı işlevlerdir.
Şirketin trafik inceleme proxy’siyle bağlantı kurulamıyorsa ne yapılmalı?
Kullanıcıdan sertifika doğrulamasını kapatmasını istemeyin. Önce uygulama ve kurum güvenlik ekipleriyle pinning’in trafik inceleme politikasıyla çakışıp çakışmadığını değerlendirin. Kurumsal proxy anahtarını pin kümesine eklemek güven modelini değiştirir; geliştirici bunu tek başına geçici hata çözümü olarak uygulamamalıdır.