Güvenli Yazılım ve Bilgi Güvenliği

GÜVENLİ YAZILIM ve BİLGİ GÜVENLİĞİ

Herkesin de mutabık kaldığı bir konu, İnternet kullanımı her geçen gün artıyor. Aslında burada yaptığımız tüm konuşmaların temelinde İnternet kullanımındaki artıştan ve sonuçlarından bahsediyoruz. Ki bugün itibarıyla 1 milyar 650 binin üzerinde kullanıcı olduğu söyleniyor. İnternet kullanımındaki artışa hangi dönemlerden geçerek geldik? 1994-1999 yıllarının aslında belirleyici olduğunu görüyoruz. Bilgi olsun diye, 1984-93’ü de yansıya koydum; ama onlar bir multimedya dönemi ve CD-Rom dönemi diye anılıyor. İlk ve başlangıç dönemi 1994-99 yıllarında e-posta, İnternet, İntranet, düşük kalitede de olsa ses ve görüntü kullanımı şeklinde gerçekleşmiş. 2000-2005’te yeni dönem web dediğimiz, yüksek kalite ses ve görüntü aktarımı gerçekleşmiş. 2006’dan bugüne geldiğimizde, artık yüksek performanslı mobil iletişim ve uygulamaları kullanabilir hale gelmişiz.

Peki, bunun temelinde yatan şey ne? Teknoloji gelişiyor, uygulamayı kullananlar mı artıyor; yoksa uygulamalar teknolojiyi mi tetikliyor? Belirleyici birkaç istatistik vermek istiyorum. İşlemci hızı 1999’da 500 megahertzden, 2009’da 3000 megahertzlere çıkmış; yani 6 katı bir büyüklük. Fakat en belirgin artış transistör sayılarında olmuş. Yine İnternet kaynaklı bir bilgi: 1999’da 9,5 milyonken, 2009’da 820 milyonlara ulaşmış; 86,3 katı, çok büyük bir rakam. Fakat mobil iletişimdeki gelişim çok daha fazla. Kilobit/second cinsinden, 1999’da 207 iken, 2009’da 42 bine ulaşıyor ve bu daha da yukarıya çıkacak, yükselecek gibi gözüküyor: 177,2 katı olmuş.

Teknoloji geliştikçe tabii ki İnternet kullanımı da artıyor. İnternet kullanıcı sayısı 2000’den 2009’a 4,6 katı olmuş. Yani istatistiklere göre, dünya nüfusunun yüzde 25’inin şu anda İnternet kullanıcısı olduğu söyleniyor. Diğer taraftan, 7 yıllık bir dönem bilgisi alabildim, 2000-2007 yılları arasında buna paralel olarak e-ticaret de artıyor; 4,6 katı olmuş.

Fakat tehdit oranı çok daha fazla artıyor. 2002’de 20 binlerdeyken, 2008’de 1,6 milyonlara ulaşmış; 80,6 katı olmuş. Malumunuz, İnternet’te hepimiz birtakım uygulamalar kullanıyoruz. Bunlar finansla ilgili olabilir, elektronik ticaretle ilgili olabilir, basın, sigorta, sağlık, eğitim olabilir -en çok sosyal paylaşım sitelerinin kullanıldığı söyleniyor- belediye hizmetleri ve devlet hizmetleri olabilir. Fakat en çok tehdit alan bölgenin uygulama katmanında olduğuna dair istatistikler var. Web sitesi ataklarının yüzde 78’inin yazılım katmanında gerçekleştiği söyleniyor. Tabii, biz, ilk başlarda, web uygulamaları gelişirken hep ağ güvenliğine, sistem güvenliğine, sistemdeki gereksiz açık portların kapatılması ya da gereksiz servislerin kapatılması ya da doğru yapılandırma kurmak şeklinde tedbirler gerçekleştirirken, bu tedbirlere ilaveten bugün artık uygulama düzeyinde de hem önlem almak, hem de bunları değişik periyotlarla sınamak noktasına geldik. Bu konuda birtakım tespitlerim var, onları sizlerle paylaşmak istiyorum.

Bir kere, yazılım güvenliği konusunda farkındalığın yeterli olmadığına inanıyorum. Bunu hem çevremde karşılaştığım insanlardan, kurumların uygulamalarını yazan arkadaşlardan aldığım izlenimler çerçevesinde söylüyorum, hem de uluslararası düzeyde yapılan anketlerde bu ortaya çıkıyor. Birazdan geleceğim ona da. Organizasyon düzeyinde, yöneticiler düzeyinde, belki BT yöneticileri düzeyinde de bu farkındalık yeterli değil. Yazılım geliştiricisi düzeyinde de öyle; zaten yazılım geliştiricinin böyle bir kaygısı yok. Tedarikçiler düzeyinde, bize uygulama sağlayan, hizmet verenler açısından da böyle bir farkındalık eksikliği var.

Güvenlik, çoğu kez kod geliştiricinin önceliklerinde yer almıyor dedik. Çünkü zaman kaybettirdiği düşünülüyor. Hızlı kod geliştirme ihtiyacı, güvenlik kontrollerinin gerçekleştirilmesinde bir direnç noktası oluşturuyor. Eğitim ihtiyacı var. Uygulama güvenliği ve farkındalık eğitimlerinin düzenlenmesine ihtiyaç var. Ne olabilir; mesela, üniversitelerde ders olarak verilebilir bu. Belki vardır; İnternet’ten bir-iki araştırma yaptım, ama tatmin edici bir sonuca ulaşamadım. Orada hızlı kod geliştirme dersleri var mesela, onu biliyorum; ama uygulama güvenliğine yönelik bir eğitim göremedim. Burada tabii ki e-öğrenme olanaklarının kullanılması söz konusu olabilir. Bu konu e-devlet çalışmaları kapsamında da üzerinde durulması gereken bir konu.

Biraz evvel bahsetmiştim; bu durum, dünyada da böyle. Yani uygulama güvenliğini yazılım geliştirme yaşam döngüsünün bir parçası olarak alanların oranı yüzde 31 düzeyinde. 2008, Deloitte araştırmasına göre, BT yöneticileriyle yapılan bir değerlendirme çalışmasında ortaya çıkan bir sonuç bu.

Güvenlik açıkları, aslında çok dikkatle üzerinde durulması gereken bir nokta. Çünkü yazılım geliştirildikten sonra, eğer bir açık varsa, bu açığı kapatmak için kodu tekrar yazmak gerekebiliyor. Yazılım geliştirme ve bakım aşamalarında, kod düzeyinde bir test sürecinin ilave edilmesi zorunlu. Geliştirme zamanının bir bölümü -yüzde 5 örneğin- kod analizine ayrılmak zorunda.

Kontroller otomatik ve manuel düzeyde iki aşamada yapılabilir. Otomatikten kastım şu: Bu konuda ticari veya açık kaynak araçlar kullanılabilir. Onun dışında bir kişi, belki yazanın dışında bir kişi, bunu gözle kontrol edebilir. Kontroller kod yazılırken yapılabilir, geliştirme sonrasında yapılabilir, üretime geçiş öncesinde yapılabilir. Üretimde de belli periyotlarla tekrarlamakta fayda var. Ayrıca dışarıdan alınan hizmetlerde, zayıflık taramalarında özellikle uygulama koduna yönelik, uygulama güvenliğine yönelik kontrollerin ya da hizmetlerin istenmesinde fayda var.

Dünya genelinden Türkiye’ye baktığımızda, aslında bizde de İnternet kullanıcısı sayısı büyük oranda artmış görünüyor. 2000-2009 yılları arasında 12 kat büyümüş. Bugün nüfusun yüzde 35’i İnternet kullanıcısı durumunda. Avrupa’da, İnternet kullanımıyla ilgili yapılan bir istatistikte yer alan sonuçlar bunlar. Aynı zamanda Türkiye’de 2009’un üçüncü çeyreği itibarıyla 63,8 milyon civarında cep telefonu abonesi var. Bunlar aslında potansiyel İnternet ya da web uygulamaları kullanıcıları. Ne zaman olacak bu; 3G ve 4G teknolojilerinin daha da gelişmesi ve yaygınlaşmasıyla.

Belki şu anda bu gelişme yeterli olmayabilir; bunun artacağını düşünüyorum. Bu durumda, GSM yoluyla web uygulamalarının kullanılmasında bir güvenlik sorunuyla karşılaşacağız. Bu da GSM tarafındaki sunucular, ağın güvenliği, eğer kurum tarafından geliştirildiyse web uygulamaları, kurumdaki sunucular ve ağın güvenliği ve istemci tarafındaki bizler için de, bizim örneğin GSM gerecimizdeki yazılımların güncelliğini korumak gibi bir açıdan farkındalık ihtiyacını da beraberinde getiriyor.

Bilgi Toplumu Stratejisi ve Eylem Planı çerçevesinde, yine e-devlet uygulamalarında güvenliğin tekrar gözden geçirilmesinde fayda var. Burada planlanmış 111 eylem var. Bunlardan bir kısmında, örneğin e-ticaret uygulama altyapısının güvenli bir şekilde geliştirilmesi şeklinde bir eylem maddesi var. Bu çerçevede uygulama güvenliğinin de ele alınmasında fayda görüyorum. Uygulama güvenlik altyapısını kurmak için -bu bir organizasyonda olabilir, bir kurumda olabilir, e-devlet kapsamında olabilir- uygulama geliştiricilerin, sistem yöneticilerinin ve güvenlik uzmanlarının mutlaka bir arada çalışması gerekir.

Bu konuda rastladığım ilk kapsamlı standart, PCI; Plastik Kartlar Endüstrisinin yayınlamış olduğu bir standart. 2008’de tüm web aplikasyonlarının güvenli kod üzerine dayanması gerektiğini ve açıklardan kurtarılmış olması gerektiğini söylüyor ve burada ilave olarak, web uygulamalarının bir uygulama fire-wall’u ile de korunması ve buna yönelik tehdit taramalarının yılda en az bir kez yapılmasını istiyor.

Open Web Application Security Project (OWASP), PCI’ın referans olarak gösterdiği bir çalışma. İlk olarak 2006’da yayımlanmıştı PCI’ın bu standardı. 2006’da yayımlandığında, “Web yazılımlarını Open Web Application Security Project’teki zayıflıklara göre değerlendirin” şeklinde bir hüküm yer alıyordu ve altında da 2006’daki, Top 10 dediğimiz, en sık karşılaşılan açıklıklar yer alıyordu. Daha sonra PCI bunu değiştirdi; çünkü bu Top 10 her yıl değişmekte. Güvenlik, aslında BT sektörünün en dinamik, en hızlı gelişen bölümü. Dolayısıyla, bu Top 10 da sürekli değiştiği için, biraz evvel gösterdiğim gibi, 2008 için genel bir madde koyarak, doğrudan Open Web Application Security Project’te referans vermemişler bu son yayınladıklarında. Aslında Open Web Application Security Project bizim de bu konuya başladığımızda ilk baktığımız, ilk yararlandığımız çalışmalardı.

Bu proje kapsamında Code Review için kullanılan birtakım araçlar var; bunlar tamamen statik olarak aplikasyonun güvenliğini tarayan araçlar. Bunları kısaca ve örnek olsun diye yazdım buraya. Burada Code Crowler var, Orison var ve O2 var.

Şimdi bir başka noktaya geçmek istiyorum. Tamam, bunları değerlendirelim ama başta bir BT politikamız olması lazım. Bu politikamızın bir parçası olarak, güvenliğin bir kalite hedefi olarak ele alınması lazım. Tabii ki bu güvenlik meselesi bir metodolojiye dayandırılmalı, süreç odaklı çalışma esas olmalı. Güvenlik yönetim süreci aslında BT kalite yönetiminin bir alt süreci.

Güvenlik politikamızda mutlaka bir maddemiz olmalı ki o da şu: Biraz evvel söylediğim PCI’ın koymuş olduğu gibi, “Bir uygulamanın güvenlik gereksinimleri tasarım aşamasında belirlenir” şeklinde bir madde ve bunu da kontrol ederek, uygulanmasını sağlamamız gerekiyor. Ayrıca bunun sürekliliğini sağlayabilmek için de süreç uyumluluk denetimlerinin yapılmasında fayda var. Çünkü hataların oluşmadan önlenmesi için yapılacak çalışmalar, daha sonra bu hataların çözülmesi için harcanacak çabadan daha ekonomik olarak kabul ediliyor.

Tabii, bu önlemleri belirleyebilmek için, muhtemel tehditlerin de belirlenmesi gerekiyor. Burada, STRIDE diye bilinen, tasarım aşamasında bir tehdit modelleme modelini örnek olarak gösterebiliriz. Başka modeller de var gerçi ama bunu sadece örnek olsun diye söylüyorum.

Kandırma, değiştirme, inkâr etme, bilgi sızması, hizmet kesintisi veya yetki yükseltme şeklinde bir tehdit modellemesine karşılık; tasarım aşamasında örneğin kandırmaya karşı kimlik doğrulama kullanacağım, değiştirmeye karşı yetkilendirme, elektronik imza kullanacağım, inkar etmeye karşı birtakım tedbirlerin yanında kayıt tutacağım, hizmet kesintisi için kimlik doğrulama yapacağım, gerektiği kadar yetkilendireceğim gibi, tasarım aşamasında bu tehditlere karşı neler yapacağımı, alacağım önlemleri belirliyorum. Bununla ilgili olarak da www.securitypatens.org da örnek kalıplar mevcut; buradan da yararlanılabilir.

Yazılım güvenliği gözden geçirme süreci nasıl ele alınabilir? Bir model olarak kabul edebilirsiniz bunu. Yazılım geliştirme sırasında, uygulama geliştirmeci tarafından statik kod analiz gereçleri kullanılarak ya da daha önce bahsettiğim ikinci göz kullanılarak kontrol yapılabilir.

Üretime geçiş öncesi -bunu BT güvenlik birimi yapmalı- en yüksek riskten başlayarak bir değerlendirme yapılarak; üretime geçiş sonrası dışarıdan uygulama zayıflık testleri yapılarak -standartlarda 3’er aylık periyotlarla yapılması, en çok tercih edilen yöntemdir- gerçekleştirilebilir.

Son olarak, yazılım güvenliğini sağlayabilmemiz için;

1- Eğitim gerekiyor; yazılım geliştiriciler ve güvenlikçiler için.

2- Yazılım geliştirme metodolojisinin uygulama güvenliği kapsamında geliştirilmesi gerekiyor, eğer yoksa.

3- Politika, prosedür ve süreçler de uygulama güvenliği kapsamında geliştirilmeli.

4- Uygulama güvenlik testleri dışarıdan alındığı gibi, içeride de yapılmalı ve bunlar BT uyumluluk denetimleriyle iç ve dış olarak denetlenmeli.

Bu güvenlik tedbirlerini alırken hiçbir zaman aradaki dengeyi bozmamaya çalışmak gerekiyor. Nasıl? Güvenlik için gizlilik, bütünlük, erişebilirlik noktasında önlemlerimizi alırken, iş gereksinimlerini, kurum yapısını, güvenlik risklerini ve bütçeyi de dikkate alıyor olmalıyız.

Tehditlere karşı alabileceğimiz önlemler; kişisel aldığımız önlemler olabilir, kurum olarak alınmış olabilir. Ama kişisel ve kurumsal tedbirlerin alınmış olması yeterli değil. Bunların aslında ülkesel düzeyde ve küresel düzeyde ele alınması gerekir.

Beni dinlediğiniz için çok teşekkür ediyorum.

TMMOB ELEKTRİK MÜHENDİSLERİ ODASI

ANKARA ŞUBESİ

III. AĞ ve ULUSAL BİLGİ GÜVENLİĞİ SEMPOZYUMU

GÜVENLİ YAZILIM ve BİLGİ GÜVENLİĞİ PANELİ

KONUŞMA METNİ

5 Şubat 2010, MİLLİ KÜTÜPHANE, ANKARA

Yorum bırakın

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.