Konuyu Okuyanlar: 1 Ziyaretçi

Sertifika Pinning Ne Zaman Mantıklı? Mobil ve API İçin Değerlendirme

Sertifika Pinning Ne Zaman Mantıklı? Mobil ve API İçin Değerlendirme
[Resim: attachment.php?aid=293]

Merhaba,

Sertifika pinning (certificate pinning) mobil uygulamada veya kalın istemcide "yalnızca şu genel anahtar / sertifika zincirine güven" demektir. MITM'i zorlaştırır ama operasyonel maliyeti vardır. Bu yazıda ne zaman mantıklı olduğunu ve alternatifleri konuşuyorum.

Ne işe yarar?
Kullanıcı cihazında özel CA ile traffic interception (kurumsal proxy, saldırgan proxy) yapıldığında uygulama bağlantıyı reddedebilir. Bankacılık / yüksek riskli uygulamalarda hâlâ tercih edilen bir kontroldür.

Ne zaman mantıklı?
  • Yüksek değerli oturum (finans, sağlık)
  • Kendi backend sertifika yaşam döngünüzü kontrol edebiliyorsanız
  • Pin'i güncelleyecek uygulama güncelleme kanalınız güvenilir ve hızlıysa
Ne zaman zararlı / gereksiz?
  • Sık değişen CDN sertifikaları + sabit pin = üretim kesintisi
  • Küçük ekip, pin rotasyon prosedürü yok
  • Yalnızca "güvenlik tiyatrosu" için; telemetri ve auth zayıfsa pin yetmez

[Resim: attachment.php?aid=294]

HPKP notu
HTTP Public Key Pinning (HPKP) tarayıcılarda deprecated / kaldırıldı. Web için modern yol: doğru sertifika yönetimi, CAA, CT izleme, HSTS. Pinning konuşurken HPKP'yi "yapın" diye önermeyin.

Mobilde pratik
Android Network Security Config ile domain'e pin eklenebilir; iOS'ta URLSession / TrustKit benzeri yaklaşımlar. Pin'i leaf yerine intermediate / SPKI pinlemek rotasyonu kolaylaştırabilir. Yedek pin (backup pin) şart.

Operasyon kontrol listesi
  1. Sertifika yenileme takvimi + pin güncelleme PR'ı
  2. Acil "pin kill switch" (uzak config) — dikkatli tasarlanmalı
  3. Break-glass: pin başarısızlığında telemetri
  4. Pentest: pinning varken güvenlik testi için debug build süreci

Alternatif / tamamlayıcı
  • Certificate Transparency monitoring
  • Short-lived certificates
  • mTLS (istemci sertifikası) — farklı tehdit modeli
  • App Attest / Play Integrity (cihaz bütünlüğü; pinning yerine geçmez)

Kaynaklar
  • OWASP MASVS / MASTG - network security
  • Android Network Security Config docs
  • Mozilla / Chromium HPKP deprecation notları

Siz production'da SPKI pin mi, yoksa CA pin mi kullanıyorsunuz? Rotasyon kazası yaşayan var mı?

Debug ve pentest build
Pinning açıkken güvenlik testi için ayrı debug build (pin kapalı veya user CA'ya izin) şart. Production APK'da pin kapatma backdoor'u bırakmayın. Remote config ile pin kapatmak mümkünse o kanalın bütünlüğünü (imza) sağlayın.

API istemcileri
Mobil dışı kalın istemcilerde (masaüstü agent) pinning benzeri certificate binding kullanılabilir. Rotasyon runbook'u olmadan production'a pin eklemek, kendi kendine DoS'tur.


Doğrulama senaryosu
Bu konuyla ilgili ek bir kontrol: değişikliği yaptıktan sonra en az bir negatif test ve bir pozitif test tanımlayın. Negatif test 'alarm boşyere düşmemeli', pozitif test 'bilinen kötü örneği yakalamalı' der. İkisini de kaydedin.

Lab disiplini
Ortamlar arasında (lab, staging, production) aynı yapılandırmayı kör kopyalamayın. Adresler, sertifikalar ve kimlikler farklıdır. Şablon kullanın, değerleri envanterden doldurun.

Runbook'a taşımak
İlgili log ve kanıtları olaydan sonra en az kurum politikasının öngördüğü süre kadar saklayın. Disk dolunca en eski güvenlik logunu silmek klasik hatadır; ayrı retention politikası tanımlayın.

Ölçüm ve alarm sağlığı
Yanlış pozitifleri susturmak ile körleşmek arasındaki çizgi incedir. Suppress kuralına gerekçe ve gözden geçirme tarihi yazın. Süresi dolunca yeniden değerlendirin.

Kapsam ve izin hatırlatması
Bu adımları change ticket olmadan production'da uygulamayın. Küçük görünen bir audit ayarı bile uygulama uyumluluğunu bozabilir. Önce staging, sonra kontrollü yayılım.

Yedekleme ve geri dönüş
Yılda en az iki kez masabaşı tatbikatı yapın: 'bu kontrol kırılırsa kim fark eder?' sorusunu sorunsuz cevaplayabilmelisiniz. Tatbikat notlarını wiki'ye ekleyin.

Log saklama süresi
Araç çıktısını ekran görüntüsü olarak bırakmak yerine makinece okunur formatta (JSON/CSV) arşivleyin. İki yıl sonraki denetimde arama kolaylaşır.

Yanlış pozitif yönetimi
Yetki ayrımı: bu kontrolü yapılandıran kişi ile alarmı triaj eden kişi mümkünse farklı olsun. Küçük ekiplerde olmasa bile en azından farklı hesap kullanın.

Değişiklik yönetimi ile ilişki
Sürüüm yükseltmelerinden sonra regresyon testi yapın. 'Aynı config' yeni sürümde farklı varsayılanlara bağlanmış olabilir. Release note'daki breaking change bölümünü okuyun.

Eğitim tatbikatı
Dış bağımlılık (feed, imza seti, konteyner imajı) için bütünlük doğrulaması yapın. İmzasız feed ile gelen kural seti tedarik zinciri riskidir.

Doğrulama senaryosu
Bu konuyla ilgili ek bir kontrol: değişikliği yaptıktan sonra en az bir negatif test ve bir pozitif test tanımlayın. Negatif test 'alarm boşyere düşmemeli', pozitif test 'bilinen kötü örneği yakalamalı' der. İkisini de kaydedin.

Lab disiplini
Ortamlar arasında (lab, staging, production) aynı yapılandırmayı kör kopyalamayın. Adresler, sertifikalar ve kimlikler farklıdır. Şablon kullanın, değerleri envanterden doldurun.

Runbook'a taşımak
İlgili log ve kanıtları olaydan sonra en az kurum politikasının öngördüğü süre kadar saklayın. Disk dolunca en eski güvenlik logunu silmek klasik hatadır; ayrı retention politikası tanımlayın.

Ölçüm ve alarm sağlığı
Yanlış pozitifleri susturmak ile körleşmek arasındaki çizgi incedir. Suppress kuralına gerekçe ve gözden geçirme tarihi yazın. Süresi dolunca yeniden değerlendirin.

Kapsam ve izin hatırlatması
Bu adımları change ticket olmadan production'da uygulamayın. Küçük görünen bir audit ayarı bile uygulama uyumluluğunu bozabilir. Önce staging, sonra kontrollü yayılım.

Yedekleme ve geri dönüş
Yılda en az iki kez masabaşı tatbikatı yapın: 'bu kontrol kırılırsa kim fark eder?' sorusunu sorunsuz cevaplayabilmelisiniz. Tatbikat notlarını wiki'ye ekleyin.

Log saklama süresi
Araç çıktısını ekran görüntüsü olarak bırakmak yerine makinece okunur formatta (JSON/CSV) arşivleyin. İki yıl sonraki denetimde arama kolaylaşır.

Yanlış pozitif yönetimi
Yetki ayrımı: bu kontrolü yapılandıran kişi ile alarmı triaj eden kişi mümkünse farklı olsun. Küçük ekiplerde olmasa bile en azından farklı hesap kullanın.

Uygulama notu
Bu rehberdeki komutları olduğu gibi kopyalamadan önce yolları, arayüz adlarını ve IP adreslerini kendi ortamınıza göre değiştirin. Dağıtım farkları (Debian/Ubuntu/RHEL/Windows sunucu) çıktı biçimini değiştirebilir; man sayfası ve resmi dokümantasyon birincil kaynaktır. Bir adım beklediğiniz sonucu vermezse önce yetki (sudo/Administrator), sonra sürüm, en son da yapılandırma dosyası sırasıyla bakın. Değişiklikleri geri almak için snapshot veya yapılandırma yönetimi (Ansible/Git) kullanın; 'elle bir dokundum' geçmişi denetimde kaybolur. Alarm ve log örneklerini ekip kanalında paylaşırken kişisel veri ve iç IP şemasını maskeleyin.
Yasal uyarı: Bu içerik eğitim amaçlıdır. Anlatılanları yalnızca kendi sistemlerinizde veya yazılı izin aldığınız sistemlerde uygulayın. Yetkisiz erişim ve sistemlere müdahale 5237 sayılı TCK'nın 243, 244 ve 245. maddeleri kapsamında suçtur.


Ek DosyalarEkran Görüntüleri
       
Cevapla



Hızlı Menü: