DNS Önbellek Zehirlenmesi Nedir?
Sahte kayıt enjeksiyonu, kullanıcı için sonuçları ve DNSSEC ile önlenmesi.
DNS önbellek zehirlenmesi, bir DNS çözümleyicisinin hafızasına sahte bir kayıt sokulması. Çözümleyici bir alan adının adresini sorduğunda, saldırgan gerçek cevaptan önce kendi uydurduğu cevabı yetiştiriyor. Çözümleyici bunu doğru sanıp önbelleğine yazıyor ve kayıt süresi dolana kadar o adı soran herkese yanlış adresi veriyor.
Tehlikeli olan bu son kısım: saldırı tek bir kişiye değil, çözümleyiciyi kullanan herkese etki ediyor. Bir operatörün DNS sunucusu zehirlenirse binlerce abone aynı sahte siteye gidebiliyor.
Saldırı bir yarış
Çözümleyici, önbelleğinde olmayan bir adı sorduğunda o alan adının yetkili sunucusuna bir soru gönderiyor ve cevap bekliyor. DNS çoğunlukla UDP kullanıyor; bağlantı kurulmuyor, gelen paketin doğru kaynaktan geldiği yalnızca birkaç bilgiye bakarak anlaşılıyor. Saldırgan bu bekleme anında sahte cevaplar gönderiyor. Sahte cevabın kabul edilmesi için tutturması gerekenler:
| Bilgi | Saldırgan için zorluk |
|---|---|
| Sorulan ad | Kolay — saldırgan genellikle sorguyu kendisi tetikliyor |
| Sorgu kimliği | 16 bit, yaklaşık 65 bin olasılık |
| Kaynak port | Rastgele seçiliyorsa on binlerce olasılık daha |
| Zamanlama | Gerçek cevap gelmeden yetişmeli |
Eskiden çözümleyicilerin bir kısmı her sorguyu aynı porttan gönderiyordu. O durumda saldırganın tahmin etmesi gereken tek şey 16 bitlik sorgu kimliğiydi ve bu, art arda deneme ile ulaşılabilir bir sayı.
2008'de ne değişti?
Eski bilgi şuydu: zehirleme denemesi başarısız olursa gerçek cevap önbelleğe yazılır ve saldırgan o kaydın süresi dolana kadar beklemek zorunda kalır. Bu da saldırıyı yavaşlatıyordu.
Güvenlik araştırmacısı Dan Kaminsky 2008'de bu frenin aşılabildiğini gösterdi. Saldırgan var olmayan alt adları soruyor: a1.banka.com, a2.banka.com… Her biri önbellekte olmadığı için her seferinde yeni bir yarış başlıyor; beklemek gerekmiyor. Sahte cevabın içine de "bu alan adının yetkili sunucusu benim" diyen ek bir kayıt koyuyor. Yarışı bir kez kazandığında tek bir adı değil, alan adının tamamını ele geçirmiş oluyor.
Bulgu açıklanmadan önce büyük yazılım üreticileri ortak bir güncelleme yayımladı. Asıl düzeltme kaynak portun her sorguda rastgele seçilmesiydi; tahmin edilmesi gereken sayı binlerce kat büyüdü.
Bugünkü önlemler
- Rastgele kaynak port: 2008 güncellemesinden beri standart.
- Harf büyüklüğü oyunu: bazı çözümleyiciler sorulan adın harflerini rastgele büyük-küçük yazıp (bAnKa.CoM) cevabın aynı yazımı taşımasını bekliyor. Tahmin edilecek bit sayısı biraz daha artıyor.
- Alan sınırı denetimi: cevaptaki ek kayıtlar yalnızca sorulan alan adının kendi bölgesine aitse kabul ediliyor.
- DNSSEC: kayıt imzalıysa ve çözümleyici imzayı doğruluyorsa sahte cevap tamamen reddediliyor. Yarışı kazanmak yetmiyor, çünkü imza taklit edilemiyor.
Son madde tek kesin çözüm, ama yalnızca alan adı imzalıysa ve çözümleyici doğrulama yapıyorsa çalışıyor. İmzanın nasıl işlediğini ve neyi korumadığını DNSSEC nedir yazısında anlattık.
Yeni yöntemler de çıkmaya devam ediyor. 2020'de yayımlanan bir araştırma, çözümleyicinin hangi portu kullandığını bir yan kanal üzerinden tahmin ederek rastgele portun getirdiği korumayı zayıflatabildiğini gösterdi; çözümleyici yazılımları yine güncellendi.
Benzer görünen ama farklı saldırılar
"Yanlış siteye gittim" belirtisi verdiği için başka saldırılar da zehirleme sanılıyor. Hangisi olduğuna göre çözüm değişiyor:
| Saldırı | Nerede oluyor | Etkilenen |
|---|---|---|
| Önbellek zehirlenmesi | Çözümleyicinin hafızası | Çözümleyiciyi kullanan herkes |
| Modem DNS ayarının değiştirilmesi | Modem arayüzü | Evdeki bütün cihazlar |
| Hosts dosyasına kayıt eklenmesi | Tek bilgisayar | Yalnızca o cihaz |
| Yerel ağda trafiğin araya alınması | Aynı ağdaki başka bir cihaz | O ağdaki kurbanlar |
İkinci satır ev kullanıcısı için en olası olanı; belirtilerini modem hacklendi mi yazısında, üçüncüsünü hosts dosyası, dördüncüsünü ARP spoofing yazısında anlattık.
Kullanıcı için asıl emniyet ağı: sertifika uyarısı
Zehirlenmiş bir kayıt sizi sahte bir sunucuya götürse bile o sunucu, gerçek sitenin geçerli bir HTTPS sertifikasına sahip değil. Tarayıcı bu yüzden büyük bir uyarı sayfası gösteriyor. Saldırının kullanıcı tarafındaki son kalesi burası: bankanızın ya da e-postanızın sayfasında sertifika uyarısı çıkıyorsa devam etmeyin. Hangi uyarının zararsız, hangisinin ciddi olduğunu SSL hatası çözümü yazısında ayırdık.
Ne yapabilirsiniz?
- DNSSEC doğrulaması yapan bir çözümleyici kullanın; büyük genel DNS hizmetlerinin çoğu doğruluyor. Seçenekler en hızlı DNS sunucuları yazısında.
- Bir sitenin adresinden şüpheleniyorsanız DNS sorgulama aracıyla başka bir çözümleyiciden gelen cevapla karşılaştırın.
- Sorun düzeldiyse cihazdaki eski kaydı silmek için DNS önbelleğini temizleyin.
- Modem arayüzünde DNS alanına kendiniz yazmadığınız bir adres girilmişse modem şifresini değiştirin ve yazılımını güncelleyin.
- Sertifika uyarılarını hiçbir zaman alışkanlıkla geçmeyin.
Sıkça sorulan sorular
DNS önbellek zehirlenmesi nedir?
Bir DNS çözümleyicisinin hafızasına sahte bir kayıt sokulmasıdır. Çözümleyici, kayıt süresi dolana kadar o adı soran herkese saldırganın verdiği yanlış adresi döndürür.
Saldırgan sahte cevabı nasıl kabul ettiriyor?
Gerçek cevaptan önce, doğru sorgu kimliğini ve kaynak portu tutturan bir cevap göndermesi gerekir. Rastgele kaynak port kullanımı bu tahmini çok zorlaştırır.
DNSSEC zehirlenmeyi engeller mi?
Alan adı imzalıysa ve çözümleyici imzayı doğruluyorsa evet. Sahte cevap imzayı taşıyamadığı için reddedilir. İmzasız alan adlarında koruma sağlamaz.
Zehirlenmiş bir kayıt beni sahte siteye götürürse fark eder miyim?
Çoğu zaman evet. Sahte sunucu gerçek sitenin geçerli HTTPS sertifikasına sahip olmadığı için tarayıcı uyarı gösterir. Bu uyarıyı geçmemek kullanıcı tarafındaki en önemli korumadır.
Kendi bilgisayarımda zehirlenme olabilir mi?
Cihazın kendi önbelleği de etkilenebilir ama ev kullanıcısında daha olası olan, modemin DNS ayarının değiştirilmesi ya da hosts dosyasına kayıt eklenmesidir. Belirti aynı, çözüm farklıdır.