spacer.png, 0 kB
Bilgi için: bilgi at bilgiguvenligi gov tr   

 

spacer.png, 0 kB
spacer.png, 0 kB
BIND Dinamik Güncelleme Hizmet Dışı Bırakma Açıklığı Üzerine Yazdır E-posta
Can Bican, TÜBİTAK BİLGEM   
04.08.2009

BIND yazılımının geliştiricisi olan Internet Systems Consortium, 28 Temmuz 2009 tarihinde BIND çalıştıran alan adı sunucularını etkileyebilecek bir açıklığı bildirmiş, bu açıklık CVE-2009-0696 kodlu açıklık duyurusuyla geniş kitlelere ulaştırılmıştır. Bu yazıda, açıklığın doğası, gerçekleştirme şekli ve alınabilecek önlemlere değinilecektir.

Dinamik güncelleme mekanizması, alan adı sunucularının kaydını tuttukları alanların uzaktan güncellenmeleri için kullanılan bir mekanizmadır. Yetkili istemciler, bu mekanizma sayesinde sunucudaki alan bilgilerini güncelleyebilirler. Açıklık, bu mekanizmayı kullanmakta, özel düzenlenmiş bir dinamik güncelleme istek paketinin sunucuya yollanması sonucunda sunucu sürecinin sonlanmasına yol açmaktadır.

Bu açıklıkta kullanılan özel düzenlenmiş paketin, açıklığı gerçekleştirebilmesi için iki özelliğe ihtiyacı vardır. Birincisi, oluşturulan isteğin alan adı sunucusunun yetkili (authoritative) olduğu bir alanın güncellenmesine yönelik olması; ikincisi, güncellemedeki kayıt tipinin ANY olması gerekmektedir. İlk özellik aynı zamanda sunucunun alan adı için birincil alan sunucusu olmasını gerektirdiğinden, ikincil alan adı sunucuları görünüşe göre etkilenmemektedir.

Kayıt tipinin ANY olması, bu açıklığın gerçekleşmesindeki anahtardır. RFC1035 ile tanımlandığı üzere, bir alan adı kaydı için geçerli olabilecek kayıt tipleri A, NS, MD, MF, CNAME, SOA, MB, MG, MR, NULL, WKS, PTR, HINFO, MINFO, MX ve TXT olarak listelenmiştir, Bunlardan MD ve MF artık kullanılmamakta, MB, MG, MR ve NULL tipleriyse hala deneysel statüde listelenmektedir. ANY kayıt tipi ise kabul edilebilir bir kayıt tipi değildir; zaten ANY kayıt tipi sadece sorgulamalarda kullanılmaktadır. Bir alan adı sunucusuna sorgulama yapılırken, sorgulama sonucunda herhangi bir türden kaydın gelmesi istendiğinde, sorgulama isteğinde kayıt tipi ANY olarak belirtilir. Örneğin aşağıdaki sorgu uekae.tubitak.gov.tr alan adının NS tipi kayıtlarını getirecektir:

$ dig NS uekae.tubitak.gov.tr

Bunun yanında, aşağıdaki sorguysa uekae.tubitak.gov.tr alan adının NS, A ve MX kayıtlarını getirecektir:

$ dig ANY uekae.tubitak.gov.tr

Normal olarak, ANY kayıt tipi sadece sorgulamalarda kullanılması beklenilen bir kayıt tipidir ve alan adı sunucularının veri tabanlarında bulunmaması beklenmektedir. Bir alan adı sunucusu yazılımının dinamik veya diğer türlerden tüm alan adı güncellemelerinde (diğer kontrollerler birlikte) kayıt tipinin de geçerli olup olmadığını kontrol etmesi gerekmektedir. Yazılımın hatası, bu geçerliliğin kontrol edilmesinde kullanılan yöntemdeki hatadan kaynaklanmaktadır. Programcı, ANY kayıt tipinin güncelleme isteğinde bulunup bulunmadığını bir assert önermesiyle kontrol etmektedir.

Assertion, programcının kodun işleyişiyle ilgili savını programlama dilinde bildirmesidir. Programlamada sav, programcının en baştan beri doğru kabul ettiği bir doğru-yanlış önermesidir. Tipik bir programlama dilinde, programa eklenen savların tersinin olması durumunda, program tamamen durur ve böylece beklenmeyen bir durumda devam ederek uygun olmayan davranışlar göstermesi engellenir. Savlar (assertions), programlamada daha çok üretim safhasında kullanılmakla beraber, çalışan programlarda da kullanılmaktadır. Üretim safhasında kullanılan savlar, programlardaki böceklerin erken tanımlanmasına yardımcı olurlar. Çalışan programlarda çoğunlukla üretim safhasındaki savlar -ilgili böcekler yok edildikten sonra- çıkartılır, böylece son kullanıcının olabilecek sorunlardan olumsuz etkilenmesi ve son ürünün tersi imkansız savları sürekli kontrol ederek kaynak harcaması engellenir. Sonuç olarak, savlar, birincil olarak programcının yazılımını geliştirirken kullandığı kontrol mekanizmalarıdır ve olması imkansız (olduğu zamansa kodda açık bir böceğe işaret eden) durumları belirler.

BIND yazılımındaki söz konusu sav ise, ANY kayıt tipinin hiç bir zaman alan adı güncellemelerinde kullanılmayacağıdır. Buradaki hata, savlar belirlenirken yasak olanla imkansız olan arasındaki farkın programcı tarafından karıştırılmasıdır. Her ne kadar ANY kayıt tipi güncellemelerde bulunamasa da, ANY kaydının bulunduğu geçersiz bir isteğin oluşturulması imkansız değildir. Burada kodun bu durumu ya daha toleranslı ele alması gerekmekte, ya da üretim kodunda savların kontrolünün kapatılması gerekmektedir. Bu açıklığa karşı sunulan çözüm de bu yönde bir değişiklikle gerçekleştirilmiştir.

Açıklığın etkisinin büyük çapta görülmemesi, birincil olarak açıklığın anında etkisini göstermesi ve böylece sorunun belirlenmesinden kaynaklanmaktadır. Aynı zamanda, standart pratikler uygulanarak tasarlanmış DNS mimarileri, bu soruna karşı baştan itibaren korunaklı olmaktadırlar. Çoğu DNS güvenlik önerilerinde, birincil alan adı sunucusunun korunması ve ikincil alan adı sunucularının genel kullanıma açık bırakılması önerilir. Bu açıklık direkt olarak birincil alan adı sunucularına erişimi engellediğinden, prensiplere uygun bir mimarinin baştan bu açıklığa karşı korumalı olacağı açıktır.

Ayrıca güvenlik duvarlarında dinamik güncellemelerin engellenmesi de önleyici bir tedbir olarak alınabilir. Dinamik güncellemeler sadece yetkili istemciler tarafından yapılabileceğinden, yine prensip olarak güvenlik duvarları tarafından kısıtlanması gereken, fakat DNS paketinin içinin incelenmesi gerektiğinden, kısıtlaması standart güvenlik duvarlarıyla kolay olmayan bir çözümdür.

Güncellemelerin sürekli izlenmesi ve hızlı bir şekilde uygulanması, çoğu açıklık için olduğu gibi bu açıklık için de en uygun çözüm olarak önerilmektedir.

DNS, Internet'in altyapısındaki en önemli sistemlerden biridir. BIND yazılımı ise bir referans uygulaması olarak DNS uyarlamalarında en çok kullanılan çözümdür. Uzun yıllardır kullanılan bu yazılımın tanımlanmış bazı yapısal sorunları bulunmakta ve üretiminden sorumlu ISC tarafından yeni sürümü üzerinde çalışılmaktadır. BIND kullanılırken güncellemeler yakından izlenmeli, standart pratik ve prensiplere dikkat edilmelidir. Ayrıca DNS uygulamasının doğasına göre diğer DNS uygulamaları da tercih edilebilir.


Favori olarak ekle (0) | Görüntüleme sayısı: 4992

Bu yazıya ilk yorumu yazın

Sadece kayıtlı kullanıcılar yorum yazabilir.
Lütfen sisteme giriş yapın veya kayıt olun.

 
spacer.png, 0 kB
spacer.png, 0 kB
Copyright 2017 TÜBİTAK-BİLGEM. Sitenin teknik altyapısında Joomla kullanılmıştır. Yazar ve site referans gösterilmeden alıntı yapılamaz. Görüşleriniz
spacer.png, 0 kB