İçeriğe geç
Glossary 6 dk okuma 895 görüntülenme

SSL Pinning

Ortadaki adam saldırılarını önleyen kritik bir güvenlik mekanizması olan SSL Pinning'i öğrenin ve proxy sunucuları için önemli etkilerini anlayın.

Security
SSL Pinning

SSL Pinning, bir istemci uygulamasının bir sunucunun beklenen kriptografik sertifikasını veya açık anahtarını koda gömerek "sabitlediği" (pin) ve bir proxy'nin trafiği farklı, geçerli olsa bile, bir sertifikayla araya girmeye çalıştığında bağlantıların başarısız olmasına neden olan bir güvenlik mekanizmasıdır. Bu süreç, güvenilir ancak beklenmedik bir sertifika sunmaya dayanan Ortadaki Adam (MITM) saldırılarını önleyerek güvenliği artırır.

SSL Pinning nasıl çalışır

SSL Pinning istemci tarafında çalışır ve standart TLS el sıkışma doğrulama sürecini genişletir. Genellikle bir TLS el sıkışması sırasında istemci, sunucunun sertifikasını kendi güven deposuna (güvenilir kök Sertifika Yetkililerinin bir koleksiyonu) karşı doğrular. Güven deposundaki bir CA sunucunun sertifikasını imzalamışsa bağlantı devam eder.

SSL Pinning ile istemci uygulaması, beklenen sunucu için belirli bir tanımlayıcı — ya tam sertifika ya da açık anahtar — saklar. Bir bağlantı başlatıldığında:
1. Sunucu sertifikasını sunar.
2. İstemci, CA güven deposunu kullanarak standart güven zinciri doğrulamasını yapar.
3. Ayrıca istemci, sunucunun sunduğu sertifikayı veya açık anahtarı önceden sabitlenmiş değeriyle karşılaştırır.
4. Her iki doğrulama da geçerse (güvenilir CA ve sabitlenmiş değer eşleşiyorsa) bağlantı devam eder.
5. Sabitlenmiş değer eşleşmezse, sertifika güvenilir bir CA tarafından imzalanmış olsa bile bağlantı bir doğrulama hatasıyla anında sonlandırılır.

Bu ek kontrol, güvenilir bir CA'yı ele geçirmiş bir saldırgan için bile trafiği araya girmeyi önemli ölçüde zorlaştırır.

SSL Pinning türleri

İki temel SSL Pinning türü vardır:

  • Certificate Pinning: İstemci, sunucunun tam X.509 sertifikasını sabitler. Bu yöntem oldukça özeldir, ancak sunucunun sertifikası yenilendiğinde veya değiştiğinde uygulamanın güncellenmesini gerektirir.
  • Public Key Pinning: İstemci, sunucunun sertifikasından çıkarılan açık anahtarı sabitler. Açık anahtar, sertifikanın kendisi yenilense bile (anahtar çifti değişmediği sürece) genellikle sabit kaldığından, bu certificate pinning'e göre daha fazla esneklik sağlar. Bu genellikle Subject Public Key Info (SPKI) hash'ini sabitleyerek uygulanır.
Özellik Certificate Pinning Public Key Pinning
Sabitlenen nedir Tam X.509 sertifikası Açık anahtar (örn. SPKI hash)
Esneklik Düşük; sertifika yenilemesinde uygulama güncellemesi gerekir Daha yüksek; aynı anahtarla sertifika yenilemeye izin verir
Yenileme etkisi Yüksek; sertifika değişirse uygulama güncellemesi gerekir Düşük; yalnızca anahtar çifti değişirse uygulama güncellemesi
Özgüllük Çok yüksek Yüksek
Uygulama riski İyi yönetilmezse uygulamayı bozma riski daha yüksek Daha düşük risk, sertifika değişikliklerine karşı daha sağlam

Örnek: Android için kavramsal pinning (Java)

import okhttp3.CertificatePinner;
import okhttp3.OkHttpClient;
import okhttp3.Request;

public class PinnedHttpClient {

    public static void main(String[] args) throws Exception {
        // Bir acik anahtarin ornek SHA256 hash'i.
        // Gercek bir uygulamada bu, hedef sunucunun sertifikasindan turetilir.
        String hostname = "api.example.com";
        String sha256_publicKey_hash = "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; // Gercek hash ile degistirin

        CertificatePinner certificatePinner = new CertificatePinner.Builder()
                .add(hostname, sha256_publicKey_hash)
                .build();

        OkHttpClient client = new OkHttpClient.Builder()
                .certificatePinner(certificatePinner)
                .build();

        Request request = new Request.Builder()
                .url("https://" + hostname + "/data")
                .build();

        // Sertifika guvenilir bir CA tarafindan imzalanmis olsa bile,
        // sunucunun acik anahtari sabitlenmis hash ile eslesmezse bu cagri basarisiz olur.
        try {
            client.newCall(request).execute();
            System.out.println("Connection successful (or would be if executed)");
        } catch (javax.net.ssl.SSLPeerUnverifiedException e) {
            System.err.println("SSL Pinning failed: " + e.getMessage());
        }
    }
}

Uygulamalar neden SSL Pinning kullanır

Uygulamalar, özellikle mobil ve IoT uygulamaları, birkaç kritik güvenlik nedeniyle SSL Pinning uygular:

  • Sahte Sertifika Yetkililerine (CA) karşı koruma: Standart TLS, istemcinin güven deposundaki tüm CA'ların bütünlüğüne dayanır. Bir CA ele geçirilirse veya bir alan adı için sahte bir sertifika verirse, saldırgan bunu bir MITM saldırısı gerçekleştirmek için kullanabilir. SSL Pinning, diğer güvenilir CA'lardan bağımsız olarak yalnızca belirli bir sertifikaya veya açık anahtara açıkça güvenerek bu güvenlik açığını atlar.
  • Güven deposu manipülasyonunun azaltılması: Kullanıcı denetimindeki cihazlarda bir kullanıcı veya kötü amaçlı yazılım, cihazın güven deposuna ek kök sertifikalar yükleyebilir. Bu genellikle meşru hata ayıklama için yapılsa da istismar edilebilir. SSL Pinning, kötü niyetli bir kök CA eklense bile, sunulan sertifika pin ile eşleşmiyorsa uygulamanın sabitlenmiş alan adlarına bağlantıları yine de reddetmesini sağlar.
  • Hassas veriler için gelişmiş güvenlik: Son derece hassas verileri (örn. bankacılık, sağlık, kimlik doğrulama token'ları) işleyen uygulamalar, daha yüksek düzeyde güven kurmak ve ağ ele geçirmeye yönelik saldırı yüzeyini azaltmak için pinning kullanır.

SSL Pinning proxy'leri nasıl etkiler

Özellikle trafik incelemesi, hata ayıklama veya güvenlik taraması için tasarlanan proxy'ler, bir aracı (meşru bir MITM) olarak davranarak çalışır.

Bir uygulama HTTPS bağlantısı için proxy kullandığında:
1. İstemci proxy'ye bağlanır.
2. Proxy, hedef sunucuyla kendi bağlantısını kurar.
3. Proxy ardından hedef sunucu için, kendi kök CA'sı (proxy'nin çalışması için istemci tarafından güvenilmesi gereken) tarafından imzalanmış yeni, anlık bir sertifika üretir.
4. Proxy bu yeni üretilen sertifikayı istemciye sunar.

Bu süreç, SSL Pinning ile temelden uyumsuzdur. İstemci uygulaması özgün sunucunun sertifikasını veya açık anahtarını bekler. Proxy kendi ürettiği sertifikayı sunduğunda, işletim sistemi tarafından güvenilen bir CA tarafından imzalanmış olsa bile, istemcinin SSL Pinning mekanizması koda gömülü pin ile bir uyuşmazlık tespit eder. Sonuç olarak istemci, bağlantıyı bir SSLPeerUnverifiedException veya benzeri bir hatayla sonlandırır ve proxy'nin trafiği araya girip incelemesini engeller.

  • Şeffaf proxy'ler: Bu proxy'ler trafiği açık istemci yapılandırması olmadan araya girer. İstemci uygulamasında SSL Pinning etkinse, işletim sistemi proxy'nin kök CA'sına güvense bile uygulama proxy'nin sertifikasını yine de tespit eder ve bağlantıyı sonlandırır.
  • Araya giren proxy'ler (açık): Bir istemci açıkça bir proxy kullanacak şekilde yapılandırıldığında, proxy'nin sertifikası uygulamanın sabitlenmiş sertifikasıyla yine de çakışır ve bağlantı hatalarına yol açar.

Operasyonlara etkisi

  • Hata ayıklama ve geliştirme: Geliştiriciler, hata ayıklama, API geliştirme ve performans analizi için ağ trafiğini incelemek üzere sıklıkla proxy'ler (örn. Burp Suite, Fiddler, Charles Proxy) kullanır. SSL Pinning bunu doğrudan engeller ve uygulamanın ağ isteklerini ve yanıtlarını görmeyi imkânsız hâle getirir.
  • Güvenlik testleri: Sızma testi uzmanları, API kötüye kullanımı, veri sızıntısı ve kimlik doğrulama açıkları dahil uygulama güvenlik açıklarını analiz etmek için proxy'lere güvenir. SSL Pinning bu araçların düzgün çalışmasını engeller ve kapsamlı güvenlik değerlendirmelerini zorlaştırır.
  • İzleme ve analiz: Bazı kurumsal ortamlar ağ izleme, veri kaybı önleme (DLP) veya analiz için proxy kullanır. SSL Pinning'li uygulamalar bu izleme yeteneklerini atlar veya engeller.

SSL Pinning'i atlatma (meşru amaçlarla)

SSL Pinning'i atlatma genellikle güvenlik testi, hata ayıklama veya tersine mühendislik gibi meşru amaçlarla üstlenilir ve tipik olarak denetimli ortamlarda gerçekleştirilir. İstemci uygulamasının veya yürütme ortamının değiştirilmesini gerektirir.

  • Uygulama kodunu değiştirme: Kaynak kodu mevcutsa, geliştiriciler test derlemeleri için pinning mantığını kaldırabilir veya devre dışı bırakabilir. Bu en güvenilir yöntemdir.
  • Çalışma zamanı enstrümantasyon çerçeveleri: Frida veya Xposed gibi araçlar, uygulama davranışının çalışma zamanında dinamik olarak değiştirilmesine olanak tanır. Bu çerçeveler uygulamanın SSL/TLS kütüphane çağrılarına bağlanabilir (hook) ve pinning kontrollerini atlayabilir. Bu genellikle root'lu veya jailbreak'li bir cihaz gerektirir.
    ```javascript
    // Android SSL Pinning'i atlatmak icin ornek Frida betik parcasi (kavramsal)
    Java.perform(function () {
    var CertificateFactory = Java.use("java.security.cert.CertificateFactory");
    var FileInputStream = Java.use("java.io.FileInputStream");
    var BufferedInputStream = Java.use("java.io.BufferedInputStream");
    var X509Certificate = Java.use("java.security.cert.X509Certificate");
    var KeyStore = Java.use("java.security.KeyStore");
    var TrustManagerFactory = Java.use("javax.net.ssl.TrustManagerFactory");
    var SSLContext = Java.use("javax.net.ssl.SSLContext");
    // Genellikle TrustManagerImpl.checkTrustedRecursive hedeflenir
    var TrustManagerImpl = Java.use('com.android.org.conscrypt.TrustManagerImpl');
    TrustManagerImpl.checkTrustedRecursive.implementation = function (a, b, c, d, e, f) {
        // Gercek kontrolu atla, boylece tum sertifikalara etkin sekilde guven
        return Java.array('java.security.cert.X509Certificate', []);
    };
    
    // ... cesitli SSL kutuphaneleri (OkHttp, Apache vb.) icin diger hook'lar
    

    });
    ```
    * Uygulama ikili dosyalarını değiştirme: Kaynak kodun mevcut olmadığı uygulamalarda, derlenmiş ikili dosyaya yama uygulayıp pinning'i devre dışı bırakmak için tersine mühendislik araçları kullanılabilir. Bu karmaşıktır ve önemli düzeyde uzmanlık gerektirir.
    * Proxy'ye duyarlı istemci yapılandırması: Bazı uygulamalar, özel CA'lara güvenmek veya geliştirme modlarında pinning'i devre dışı bırakmak için yapılandırma seçenekleri sunabilir, ancak bu üretim uygulamalarında nadirdir.

SSL Pinning'i atlatma; öncelikle güvenlik araştırması, geliştirme veya yetkili test için, sorumlu ve etik biçimde yapılmalıdır. Kötü niyetli amaçlarla yetkisiz atlatma yasa dışı ve etik dışıdır.

Güncellendi: 04.03.2026
Kategoriye dön

Bunları da okuyun

Glossary 3 dk

Mobil proxy nedir? 4G/5G proxy'ler açıklandı

Mobil proxy, trafiği gerçek bir 4G/5G cihaz üzerinden yönlendirir ve size binlerce gerçek kullanıcının paylaştığı bir operatör IP'si verir — engellenmesi en zor tür. Nasıl çalıştıklarını ve ne zaman kullanılacağını anlatıyoruz.

Glossary 3 dk

ISP proxy nedir? Statik residential proxy'ler açıklandı

ISP proxy, veri merkezinde barınan ama residential bir ISP'ye kayıtlı statik bir IP'dir — residential güveni, veri merkezi hızı ve sabit IP. Nasıl çalıştıklarını ve ne zaman kullanılacağını anlatıyoruz.

Glossary 3 dk

HTTP ve HTTPS Proxy: Fark Nedir?

HTTP proxy web trafiğinizi okuyabilir; HTTPS proxy onu CONNECT ile şifreli tüneller. Gerçek fark, proxy'nin ne gördüğü ve hangisini seçmeniz gerektiği.

Glossary 4 dk

Proxy nedir? Yeni başlayanlar için eksiksiz rehber

Proxy sunucusu, trafiğinizi farklı bir IP üzerinden yönlendirerek gerçek IP adresinizi gizleyen bir aracıdır. Proxy'lerin nasıl çalıştığını, temel türlerini ve doğru olanı nasıl seçeceğinizi anlatıyoruz.

Glossary 4 dk

SOCKS5 ile HTTP Proxy: Farkları, Hızı ve Hangisi Ne Zaman Kullanılır

SOCKS5 ve HTTP proxy'ler farklı sorunları çözer. HTTP proxy web trafiğini anlar, önbelleğe alabilir veya filtreleyebilir; SOCKS5 ise herhangi bir TCP/UDP bağlantısını körlemesine iletir — yalnızca gezinmeyi değil, torrentleri, oyunları, e-postayı da. İkisi de kendi başına trafiği şifrelemez. Hangisinin ne zaman kazandığını burada bulacaksınız.

Glossary 1 dk

CDN ve proxy'ler: Nasıl çalışır

CDN ve proxy'ler — birlikte nasıl çalışır — proxy ve ağ teknolojileri alanına ait bir terim.

Proxy'lerimizi deneyin

100+ ülkede 20,000+ proxy

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.