3 Eylül 2012 Pazartesi

Ortak [Kütüphane, Zaafiyet, Çekirdek, Yaklaşım] Nereye Kadar ?

Tarih : 2 Ekim 2006

Ağ veya sistem güvenliği şirketleri de dahil olmak üzere çok sayıda yazılım şirketi, yazılım geliştirme sürecinde, çoğu açık kaynak kodlu ve BSD yada eşdeğer lisanslı ortak programlama kütüphanelerinden faydalanmaktadır. Amaç dünyayı yeniden keşfetmek yerine, rekabetin yaygınlaştığı dünyada verimli ve güvenli sistemleri hızlıca üretmektir. Aslında oldukça doğru ve faydalı görünen bu yöntem, yazılım geliştirici kurumların güvenlik yaklaşımı neticesinde tehlikeli bir noktaya gitmektedir. Çok sayıda kurum, programlama kütüphanelerini kullanırken kendi kodlarının içine dahil etmekte ve güncellemelerini kendi kodları üzerinden yapmaktadır.

Bahsi geçen kütüphanelerde ortaya çıkan güvenlik açıkları, kütüphane geliştiricisi ekip tarafından hızlıca düzeltilip yazılım yamaları yayınlanmaktadır. Oysa birçok yazılım geliştirici kurum söz konusu yamaları yapmış oldukları değişimlerden ötürü kendi koduna uyarlayamamakta, umursamamakta veya farklı bir platforma taşımış olduğu uygulamada ilgili zaafiyetin bulunmadığını düşünmektedir.


Başlıca ortak kullanım kütüphaneleri arasında güvenlik yazılımlarının çokça faydalandığı OpenSSL kriptolama kütüphanesi, sıkıştırma için kullanılan ZLib kütüphanesi ve resim işleme kütüphaneleri (libpng, libtiff, libjpeg vb.) yer almaktadır. Bu kütüphanelerde zaman içinde bulunan zaafiyetler özellikle kütüphaneyi kullandığını açıklamış kurumlar tarafından kabul edilmekte ve ürettikler ürünler için yamalar yayınlanmaktadır. Çoğunlukla yamalar açığın tek bir türünü kapsamakta veya ilgili kod ile birleştiğinde oluşabilecek bir başka zaafiyeti göz ardı etmektedir. Bahsi geçen kurumların büyük çoğunluğu ise BSD lisansının avantajını kullanıp, böyle bir kütüphaneyi kullanmadığını belirtmekte, farkettikleri açık veya yamalar ile ilgili kendi yazılım güncellemelerini sessiz sedasız yapmaktadır. Bazıları ise açıkları tamamen umursamamakta veya yamalarının işlevsiz olduğunu görememektedir.

Ortak kütüphaneler dışında bir diğer önemli ortak programlama bileşeni ise sistem çekirdeğidir. Lisansı değiştirilmeye ve kodunu kapatmaya izin veren sistem çekirdekleri, diğer işletim sistemi veya gömülü ürünlerde kullanılmaktadır. Özellikle güvenlik sektöründe son yıllarda 'kutu içinde herşey var' yaklaşımı sonucunda özel işletim sistemi olarak bu sistemlerin çekirdekleri ve mimarileri kullanılmaktadır. Bazı kurumlar ise yıllardır TCP/IP ve süreç yönetimi gibi kritik özellikleri, açık kaynaklı çekirdeklerden kendi işletim sistemlerine kopyalamış, detaylı bilgiyi ise açıklamamaktadır. Ürün geliştiricileri *BSD ailesinin ve GNU/Linux işletim sisteminin çekirdeklerini kullanırken, geliştirme aşamasında olan bu çekirdeklerin eşdeğer zaafiyetleri barındırmış olduklarını unutabilmekte veya ürün itibarı zarar görmesin diyerek göz ardı etmektedir.

Özetle çok sayıda kütüphane ve çekirdek kullanmakta olduğumuz, işletim sistemi, güvenlik ürünü veya yazılımı içinde yerini almıştır. Bahsi geçen kütüphanelerde ortaya çıkabilecek her tür zaafiyet veya farklı uygulama biçimleri tüm ürünlerde geçerli olacaktır. Sadece açığın kullanımı esnasında platform veya mimari farklılıkları için küçük değişiklikler yapılması gerekecektir. Bu tür açıklar sıklıkla yayınlanmakta ancak etkilenen yazılımlar veya mimariler doğrudan belirtilmemektedir. Genellikle kütüphane ekibinin güvenlik duyurusu, birkaç Linux/BSD geliştiricisinin duyurusu göz çarpmakta fazla detaya girilmemektedir. Bu nedenle hala birçok insan kullanmakta oldukları Intrusion Prevention System/Firwall/Web Application Firewall ürünlerinde önlemeleri gereken bu zaafiyetlerin olduğunu bilememektedir.

Güvenlik ürün geliştiricilerinin çok daha hassas olması, söz konusu ortak kütüphane zaafiyetlerini ivedilikle gidermesi ve bunu açık şekilde yapması gerekmektedir. Bu durum sonucu ilgili kurumun itibarı zarar görmez, aksine yazılım geliştirme sürecine verdiği önem ortaya çıkar. Ancak zihniyetin değişmediği ve uzun sürede değişmeyeceği görünüyorken, kapalı kapılar arkasında neler yapıldığı çok bilinmediği için bir süre daha onların verdikleri bilgiler ile yetinecekmişiz gibi görünüyor.

Fatih Ozavci
Bilgi Güvenliği Danışmanı

Referanslar :

OpenSSL Security Advisory [28th September 2006]
http://www.openssl.org/news/secadv_20060928.txt

zlib Compression Library Corrupts malloc Data Structures via Double Free
http://www.zlib.net/advisory-2002-03-11.txt

LibTIFF Integer Overflows Let Remote Users Crash the Application
http://securitytracker.com/alerts/2004/Oct/1011674.html