İnternetin ve mobil cihazların kullanımının yaygınlaşması ile geliştirilen yazılımlar artmıştır. Bu nedenle günümüzde yazılım güvenliğinin önemi giderek artmaktadır. Bilişim güvenliği ihlalleri genellikle yazılım üzerinden olmaktadır. Gartner adlı teknoloji araştırma ve danışmanlık firması bilişim güvenliği ihlalleri ile alakalı yaptığı araştırmada bu ihlallerin %80 oranında yazılım güvenliği problemlerinden kaynaklandığını ortaya koymuştur. Bu nedenle geliştirilen yazılımların istenilen gereksinimleri yapmasının yanında güvenli olması da gerekmektedir. Yazılımın güvenli olması demek ise; yazılımın uygun güvenlik özelliklerine sahip olması ve yazılım geliştirme sürecinin sağladığı güvencenin beklenen seviyede olması demektir.
Bir yazılım uygulamasının güvenlik analizini yapmak için otomatik tarama, manuel ve otomatik güvenlik testleri, statik analiz ve manuel kod inceleme gibi teknikler vardır. Tabii ki, bu tekniklerin kör noktaları, güçlü ve zayıf yönleri vardır. Her yazılım uygulaması farklıdır. Bu nedenle uygulamada güvenliği sağlamak için en uygun maliyet tekniklerini kullanarak “birleşik”yaklaşımı uygulamak doğru bir tercih olacaktır.
Bu çalışmada da güvenli yazılım geliştirme sürecinde yer alması gereken kaynak kod analizinden bahsedilecektir.
Kaynak Kod Analizi
Bir yazılımı çalıştırmadan yazılımın kaynak kodunda yer alan olası hataları bulmak ve yazılımın kodlama kurallarına uygunluğunu test etmek için kullanılan yöntemler statik kod analizi olarak adlandırılır. Kaynak kod analiziyle yazılım geliştirme sürecinde kodun yazılım açısından uygunluğuna ve mantıksal açıdan doğruluğuna bakılmaktadır. Ayrıca kaynak kod analiziyle yazılım bileşenleri güvenli yazılım geliştirme kuralları açısından da incelenmekte ve yazılım için zafiyet oluşturacak içerikler temizlenmektedir. Statik kod analiz biçimi, yapısı, içeriği veya belgelerine dayalı bir sistem veya bileşen değerlendirilmesi sürecidir.
Güvenli bir kod incelemesi yedi güvenlik mekanizmasına veya alana odaklanmaktadır. Güvenli bir kod incelemesi bu alanların her birinde kaynak kodunun sağlamlığı konusunda yazılım geliştiricileri bilgilendirmelidir:
- Doğrulama
- Yetkilendirme
- Oturum yönetimi
- Veri doğrulama
- Hata işleme
- Loglama
- Şifreleme