SSL Sertifika Analizi Açık Port Tespiti Web Uygulama Tarama DNS Güvenlik Denetimi HTTP Başlık Analizi Yanlış Yapılandırma Tespiti Yazılım Parmak İzi Alt Alan Adı Tarama
SSL Sertifika Analizi Açık Port Tespiti Web Uygulama Tarama DNS Güvenlik Denetimi HTTP Başlık Analizi Yanlış Yapılandırma Tespiti Yazılım Parmak İzi Alt Alan Adı Tarama

Tüm Kayıtlar

Kategori Kriptografik Protokol Zafiyeti / Dolgu Orakülü
Tipik Önem Derecesi Yüksek
CVE CVE-2014-3566
OWASP A02:2021 – Kriptografik Başarısızlıklar
CWE CWE-326 (Yetersiz Şifreleme Gücü), CWE-757 (Daha Az Güvenli Algoritmanın Seçimi)
Diğer Adları POODLE, Padding Oracle On Downgraded Legacy Encryption
Etkilenen Sistemler SSLv3 desteklemeye devam eden her sunucu veya istemci; SSLv3 geri dönüşü kullanan HTTPS sunucuları, tarayıcılar, VPN'ler, posta sunucuları
Açıklanma Tarihi 14 Ekim 2014 (Google Güvenlik Ekibi)

Genel Bakış

POODLE (Padding Oracle On Downgraded Legacy Encryption – Düşürülmüş Eski Şifrelemede Dolgu Orakülü), Ekim 2014'te Google'dan Bodo Möller, Thai Duong ve Krzysztof Kotowicz tarafından kamuoyuna duyurulan bir ortadaki adam (man-in-the-middle) saldırısıdır. Saldırı, SSLv3'ün Şifreli Blok Zincirleme (CBC) modundaki temel bir tasarım hatasını hedef alır: SSLv3, dolgu baytlarının içeriğini tanımlamamaktadır; bu durum bir dolgu orakülü saldırısına zemin hazırlar. Bu zafiyet bir yazılım hatasından değil, SSLv3 protokol spesifikasyonunun kendisinden kaynaklandığından hiçbir yama ile giderilemez; tek geçerli çözüm SSLv3'ün tamamen devre dışı bırakılmasıdır.

Daha sonra keşfedilen POODLE-TLS (CVE-2014-8730) varyantı ise TLS spesifikasyonu tarafından kapsanmasına rağmen CBC dolguyu doğru biçimde doğrulamayan bazı TLS uygulamalarını etkilemekte olup bu uygulamaların ayrıca yamalanması gerekmektedir.

Nasıl Çalışır?

Saldırının gerçekleşmesi için üç koşulun aynı anda sağlanması gerekir: saldırganın ortadaki adam konumunda olması (örn. aynı ağ segmentinde bulunması), bağlantının SSLv3'e düşürülebilir olması ve saldırganın kurbanın tarayıcısını hedef sunucuya tekrarlı istekler göndermeye zorlaması (herhangi bir kökenden enjekte edilen JavaScript aracılığıyla mümkündür, zira tarayıcı çerezleri otomatik olarak ekler).

  1. Protokol düşürme: Modern istemciler önce TLS 1.2 veya 1.3'ü dener. El sıkışma başarısız olursa (gerçek ya da saldırgan kaynaklı), birçok istemci TLS 1.1, TLS 1.0 ve son olarak SSLv3'e geri düşer. Saldırgan, üst sürüm el sıkışmalarını iptal etmek için TCP RST paketleri göndererek SSLv3'ü zorlar.
  2. SSLv3'te CBC dolgu orakülü: CBC modunda her düz metin bloğu, şifrelenmeden önce bir önceki şifreli metin bloğuyla XOR işlemine tabi tutulur. MAC-then-encrypt (önce MAC, sonra şifreleme) şeması kullanılır. TLS'de dolgu içeriği belirlenmiştir (tüm baytların dolgu uzunluğu değerine eşit olması gerekir) ve dolgu hatası ayırt edilebilir bir hata yanıtı döndürerek bir orakül oluşturur. SSLv3 ise yalnızca son dolgu baytını belirtir; önceki dolgu baytları göz ardı edilir; bu da her CBC bloğunu geçerli bir orakül hedefine dönüştürür.
  3. Bayt bayt şifre çözme: Saldırgan şifreli metindeki belirli baytları manipüle ederek sunucunun MAC hatası mı, dolgu hatası mı yoksa geçerli bir yanıt mı döndürdüğünü gözlemler; bu sayede her istek başına 1 bit bilgi elde eder. Bayt başına yaklaşık 256 istek üzerinden saldırgan her düz metin baytını kurtarabilir; bu işlem genellikle HTTP başlıklarında gönderilen oturum çerezlerini hedef alır.
  4. Pratik sömürü: 16 baytlık bir oturum çerezinin kurtarılması ortalama 256 × 16 = 4.096 istek gerektirir. Modern ağ hızlarında bu işlem saniyeler ile dakikalar arasında tamamlanarak şifreleme anahtarı kırılmadan oturum ele geçirmesine olanak tanır.

Saldırı, sunucu perspektifinden tamamen pasiftir; bellek bozulma hatası veya girdi doğrulama başarısızlığı değil, protokolün hata işleme mekanizması istismar edilmektedir.

İş Etkisi

Kimlik doğrulanmış bir oturuma karşı gerçekleştirilen başarılı bir POODLE saldırısı, saldırganın oturum belirteçlerini çalmasına ve kurban kullanıcı kimlik bilgilerini öğrenmeksizin onun kimliğine bürünmesine olanak tanır. Uygulamaya bağlı olarak sonuçlar şunları içerebilir:

  • Hesap ele geçirme ve hassas uygulama işlevlerine veya verilerine yetkisiz erişim.
  • Düzenleyici ve uyumluluk ihlali — SSLv3 desteğinin sürdürülmesi, PCI DSS 3.1+ gerekliliklerini (Haziran 2016'ya kadar SSLv3 devre dışı bırakılmasını zorunlu kılan) ve NIST SP 800-52 Rev. 2 kılavuzunu doğrudan ihlal etmektedir.
  • Veri gizliliği ihlali — Düşürülmüş SSLv3 oturumu üzerinden iletilen tüm veriler (kimlik doğrulama belirteçleri, kişisel veriler, API anahtarları dahil) saldırgan tarafından okunabilir hale gelebilir.
  • İtibar kaybı — Uzun süredir kullanımdan kaldırılmış bir zafiyetin açığa çıkması, denetçiler, müşteriler ve iş ortakları nezdinde zayıf güvenlik uygulamalarının işareti olarak değerlendirilir.

Nasıl Düzeltilir?

  1. Tüm sunucu ve istemcilerde SSLv3'ü devre dışı bırakın. Bu kesin çözümdür. OpenSSL tabanlı sunucularda (Apache, Nginx) Apache için SSLProtocol all -SSLv2 -SSLv3, Nginx için ssl_protocols TLSv1.2 TLSv1.3; yapılandırmasını ekleyin. IIS'de SSLv3'ü HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server kayıt defteri anahtarına Enabled = 0 değerini atayarak devre dışı bırakın.
  2. Tüm uç noktalarda minimum TLS 1.2 zorunluluğu getirin. TLS 1.3 tercih edilmektedir. Belgelenmiş zayıflıkları (BEAST, RC4 önyargıları) nedeniyle TLS 1.0 ve TLS 1.1 de kullanımdan kaldırılmalıdır.
  3. TLS_FALLBACK_SCSV'yi uygulayın (RFC 7507). Bu Sinyal Şifre Paketi Değeri, sunucunun yapay olarak düşürülmüş el sıkışmaları tespit edip reddetmesine olanak tanıyarak protokol düşürme saldırılarını engeller.
  4. POODLE-TLS yamalarını uygulayın: TLS yığınınız CVE-2014-8730'a karşı savunmasız olarak tanımlandıysa ilgili TLS kütüphanesi satıcısının (OpenSSL, NSS, SChannel vb.) güvenlik danışmanlığını takip edin.
  5. Tüm uç noktaları denetleyin: Yalnızca kamuya açık HTTPS sunucularını değil, yük dengeleyicileri, CDN kökenlerini, dahili API'leri, posta sunucularını (SMTP STARTTLS, IMAPS) ve VPN geçitlerini de kapsayın.
  6. Şifre paketi yapılandırmasını doğrulayın: Mozilla'nın SSL Yapılandırma Üreticisi'ni kullanın ve SSL Labs Sunucu Testi gibi araçlarla SSLv3'ün artık sunulmadığını teyit edin.

Kaynaklar

Sıkça sorulan sorular

Orijinal POODLE zafiyeti (CVE-2014-3566), belirli bir uygulamada değil, SSLv3 protokol spesifikasyonundaki bir tasarım hatasıdır. SSLv3, CBC dolgu baytlarının içeriğini zorunlu kılmamakta ve bu durum yapısal olarak dolgu orakülü saldırısına imkân tanımaktadır. Hata spesifikasyonun kendisinde bulunduğundan hiçbir yazılım yaması ile giderilemez; SSLv3 tamamen devre dışı bırakılmalıdır. Ayrı bir varyant olan POODLE-TLS (CVE-2014-8730) ise dolguyu hatalı doğrulayan belirli TLS uygulamalarını etkiler ve bu uygulamaların yamalanmasıyla giderilebilir.

Saldırganın üç yeteneğe ihtiyacı vardır: (1) istemci ile sunucu arasında ortadaki adam ağ konumu, (2) kurbanın tarayıcısını hedef sunucuya çok sayıda istek göndermeye zorlama yeteneği (genellikle herhangi bir tarayıcı sekmesinde çalışan kötü niyetli bir betik aracılığıyla), ve (3) sunucunun hâlâ SSLv3 bağlantılarını kabul etmesi. Saldırgan, şifreli metin bloklarını manipüle ederek sunucu hata yanıtlarını gözlemler ve düz metin baytlarını tek tek kurtarır; genellikle oturum çerezlerini hedef alır.

Modern koşullarda neredeyse hiç etkilemez. SSLv3 1996'da yayımlanmıştır ve tüm modern tarayıcılar ile istemciler, 2014'teki açıklamanın ardından SSLv3 desteğini kaldırmıştır. SSLv3 gerektiren son yaygın istemci, Windows XP üzerinde Internet Explorer 6 olup her ikisi de uzun süredir yaşam sonu (end-of-life) durumundadır. SSLv3'ün devre dışı bırakılması ve TLS 1.2 veya daha yüksek bir sürümün zorunlu kılınması, desteklenen hiçbir tarayıcı veya işletim sistemini etkilemez.

TLS_FALLBACK_SCSV (RFC 7507'de tanımlanmıştır), bir istemcinin düşürülmüş el sıkışmasına dahil ettiği özel bir şifre paketi değeridir; böylece sunucuya aslında daha yüksek protokol sürümlerini desteklediğini bildirir. Daha yüksek sürümleri destekleyen ancak bu sinyali alan bir sunucu, el sıkışmayı 'uygunsuz_geri_dönüş' uyarısıyla iptal ederek düşürmeyi engeller. Bu mekanizma POODLE'ın düşürme boyutunu hafifletir; ancak SSLv3'ü güvenli kılmaz; SSLv3'ün devre dışı bırakılması zorunlu olmaya devam eder.

Qualys SSL Labs Sunucu Testi'ni (https://www.ssllabs.com/ssltest/) kullanın; bu araç SSLv3 desteğini ve POODLE zafiyetini açıkça denetler. SSLv3 sunmaya devam eden veya TLS_FALLBACK_SCSV desteği olmayan herhangi bir sunucu işaretlenir. OpenSSL komut satırı aracını da kullanabilirsiniz: 'openssl s_client -ssl3 -connect hostname:443' — bağlantı başarısız olursa SSLv3'ün devre dışı bırakıldığı teyit edilir. Sensagraph, sürekli TLS yapılandırma taramasının bir parçası olarak SSLv3 kullanılabilirliğini otomatik olarak algılar.