Hemen hemen tüm kuruluşlar, güvenliklerini antivirüsler, güvenlik duvarları (firewall), saldırı önleme sistemleri (ips) gibi geleneksel yöntemlerle sağlamaya çalışır ancak çoğu zafiyetlerin %60’ının içeriden kaynaklandığını, görmezden gelir veya farkında değildir. İçerden kaynaklanan zafiyetlerin bir bölümü ise kuruluş tarafından sunulan yazılımlara dayalı risklerdir. Bunun farkında olan uzman saldırganlar son zamanlarda uygulamaların kaynak kodlarına dayalı zafiyetlere ağırlık vermeye başladılar.
Diğer taraftan Web güvenliğine geleneksel yöntemlerle yaklaşmak çok zor olmaktadır. Bunun birincil sebebi web platformunun doğal karmaşıklığıdır. Günümüzde çok sayıda farklı web standartları ve teknolojileri vardır. Zaman baskısı, mevzuatın sürekli değişmesi, pazarlama stratejileri nedeni ile sürekli yeni yazılımların geliştirilmesi ve güncellenmesi gerekmektedir. Bu hızlı değişim sonunda birçok uygulama yazılım güvenliğinden yoksun şekilde internet ortamına sunulmaktadır. Birim, entegrasyon ve kabul test aşamaları çoğu kez geliştiricinin sorumluluğuna bırakılmıştır. Yazılım geliştirme işini bir miktar profesyonel yapmaya çalışan kuruluşlar ise Yazılım Yaşam Döngüsünün en sonunda yazılım güvenliğine yer vermektedirler.
Yazılım geliştiren tüm kuruluşlar, ürünlerinin güvenlik düzeyinin beklenen eşiğin üzerinde olmasını sağlamalıdır. Organizasyonlar, bilgi varlıklarını daha iyi korumak için geleneksel Yazılım Geliştirme Yaşam Döngüsünü; araç, kontrol mekanizması, eğitim, çalıştay gibi desteklerle Güvenli Yazılım Geliştirme Yaşam Döngülerine yakınlaştırmak zorundadır.
Bu ay sizlere kendi tecrübelerimden yola çıkarak uygulanmasında fayda gördüğüm 3 aşamalı Güvenli Yazılım Geliştirme Yaşam Döngüsüne geçiş planını anlatmaya çalışacağım.
Birinci Aşama
Bir Sponsor Yönetici bulun: Alışkanlıkları değiştirmek, süreçlerde yenilik yapmak her projede güçlü bir yönetici sponsorluğuna ihtiyaç duyar. Güvenli yazılım geliştirme projelerinde de en üst düzey yöneticileri sponsorluğu kabul etmeye ikna etmek çok önemlidir. Yürütmeyi ikna etmenin en değerli adımı, organizasyonun gerçek ihlallerini ve siber güvenlik zafiyetlerini rapor etmektir.
Araçları Seç: Mevcut yazılım tabanlı güvenlik sorunlarını tanımlamak için yapılması gereken birçok işin ilgili yazılım araçları olmadan tamamlanması pek mümkün değildir. Bu araçlar, geliştiricilerin güvenlik bilgisi düzeyini denetlemek ve güvenlik bilgisi düzeylerinin istenen eşiğin üzerinde olduğundan emin olmak için kullanılmalıdır. Sorunları tanımlayan ve yayınlayan, nasıl giderileceği hakkında ipuçları sunan yaşam döngüsü izleme araçları elde edilmelidir.
Güvenli Yazılım Geliştirme Denetçi Ekibi Kurma: Tüm yazılım ürünlerinde teknik bağımlılıklar vardır. Organizasyonlarda güvenli yazılım geliştirme sürecinde yazılımcılar arasında bir koordinasyonu sağlayacak ve denetleyecek bir ekibe ihtiyaç duyulmakta ve ekibin söz konusu statik ve dinamik kod analiz araçları çalıştırarak, geliştirici personelinin güvenli yazılım geliştirme kriterlerini karşıladığını kontrol etmesi gerekmektedir. Güvenli yazılım geliştirme denetçi ekibinin hem yazılım geliştirme süreçlerine hâkim olması hem de statik ve dinamik kod analizlerini yapacak araçları iyi derecede kullanabiliyor olması gerekir. Denetçi Ekibi, Kurumsal süreçlere dahil edilmeye çalışılan araçlar ve güvenlik süreçleri hakkında eğitilmelidir.
Bulgu Kapsamını Dar Tut: Yazılım güvenlik açıkları Kritik, Yüksek, Orta ve Düşük seviye olmak üzere 4 kategoriye ayrılmalı. İlk aşamada sayı olarak en az ancak en riskli olan kritik bulguların değerlendirilmesine karar verilmelidir. Bu şekilde hem en öncelikli bulguların temizlenmesi hem de geliştiricilerin bir anda birçok bulgu ile boğulmamalarını sağlayarak bulguları çözme sürecine girmeleri sağlanmalıdır.
İkinci Aşama
Bulgu Kapsamını Biraz Genişlet: Kritik bulguların büyük oranda çözülmesi ile artık kapsamın genişletilmesine karar verilmelidir. Bu sebepten kapsam “Öncelikli Yüksek Bulgu” denilen, yüksek bulguların bir kısmını kapsayan ama acil çözülme açısından diğer yüksek bulgulardan daha öncelikli olması gereken bulgulara genişletilmelidir.
Danışmanlık Toplantıları: Bulguların tamamen kaynak koddan kaynaklanıyor olmasından dolayı denetçilerin geliştiricileri güvenlik probleminin kaynağı görmesi ve “biz ve onlar” kategorilerine ayrılmaları sürece yardımcı olmamaktadır. Eğer geliştirici bu bulguları kavrayamaz ise, onları suçlamanın bu durumun düzeltilmesine bir katkısı olmaz. Hangi bulgunun false-positive olduğunu belirlemek dünden bugüne hem yazılım hem sistem bilgisinin korele edilip analiz edilmesi gereken ve ülkemizde çok az kişinin sahip olduğu ayrı bir uzmanlık alanıdır. Kurumun kendi denetçi ekibi de bu konuda yeterince uzman değilse periyodik olarak dış kaynaktan tedarik edilen danışmanlık toplantılarının yapılmasına karar verilmelidir.
Haftalık Raporlama: Bir sürecin ilerleyerek devam ettiğini geliştiricilere hissettirmek, desteği alınan sponsorları (yöneticileri) bilgilendirmek amacıyla rutin aralıklarla somut ölçüm verileri sunulmalıdır. Güvenli yazılım geliştirme için en makul ölçüm bulgu sayıları olmaktadır. Her hafta tüm yazılım geliştirme birimlerine ve sponsorlara şeffaf bir şekilde yazılımlarındaki güvenlik açıkları gönderilmelidir. Bu durum aynı zamanda yazılım geliştiriciler arasında bir rekabet ortamı doğurur.
Üçüncü Aşama
Bulgu Kapsamını Daha da Genişlet: “Öncelikli Yüksek Bulgu”ların da büyük ölçüde çözülmesi ile sırada tüm yüksek ve düşük öncelikli bulguların incelenmesi çalışmaya dahil edilmelidir.
Geliştiricilerin Eğitimi: Yazılım geliştiricilerinin güvenli yazılım geliştirme uygulamaları konusunda eğitilmesi gerekmektedir. Bu eğitimler güncel teknolojiler ışığında sürekli aşı gibi tekrarlanmalıdır.
Denetçilerin Eğitimi: “Güvenli Yazılım Geliştirme Denetçi Ekibi”, organizasyonda kullanılan programlama dilleri, frameworkler ve davranışları hakkında bilgi sahibi olmalıdır. Aynı geliştiricilerde olduğu gibi güncel teknolojiler ışığında bu eğitimler tekrarlanmalıdır.
Otomasyon Sistemi geliştir: Organizasyonlarda denetçi ekibinin tüm yazılım projeleri için kod analizi sürecini yönetmeleri zor olmaktadır ya da organizasyonda Devops benzeri bir çalışma varsa mümkün olduğunca yapılan işlerin otomatize edilmesi sağlanmalıdır.
Dokümantasyon: Bulgu çeşitlerinin neler olduğunu, hangi zafiyetlere neden olduğunu, nasıl çözülmesi gerektiği hakkında kurumsal bir dökümantasyon oluşturulması gerekmektedir.
Email: yenalarslan@ictmedia.com.tr