Yazılım güvenlik açıklarının makine öğrenmesi yöntemleri ile tespiti
Detection of software security vulnerables by deep neural networks methods
Yazar: GÖZDE MİHRAN KAYA
Danışman: DR. ÖĞR. ÜYESİ İRFAN KÖSESOY
Kocaeli Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı
Derece: Yüksek Lisans, 2023
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control

Özet:
Yazılım ve bilişim sistemleri gün geçtikçe yaygınlaşmakta ve kullanımı her geçen gün artmaktadır. Bu sistemlerde yaşanan değişimler beraberinde güvenlik açıklarını da getirmektedir. Yazılım güvenlik açığı, bir tehdit kaynağı tarafından istismar edilebilecek bilgi sistemindeki, sistem güvenlik prosedürlerindeki, iç kontrollerdeki veya uygulamadaki zayıflık olarak tanımlanmaktadır. Mevcut sistemlerde var olan güvenlik açıkları konunun uzmanları tarafından belirlenmiştir. Belirlenen açıklara sürekli olarak yenileri de eklenmektedir.  
Güvenlik açıklarını, yazılım geliştirme sürecinin başlarında tespit edip önlemek, ilerleyen süreçlere kıyasla zaman ve maliyet açısından daha tasarrufludur. Yazılım geliştirme aşamasında oluşan güvenlik açıkları sonraki süreçlere aktarıldığında çözümü zorlaşmakta ve çözüm maliyeti artmaktadır. Bu nedenle kodlardaki güvenlik açığının kodlama aşamasında tespit edilmesi önemlidir.  
Son yıllarda özellikle görüntü işleme, doğal dil işleme gibi alanlardaki problemlere başarıyla uygulanan makine öğrenmesi algoritmaları kodlardaki güvenlik açıklarının tespit edilmesinde de kullanılmıştır. Bu alanda yapılan çalışmalar, "bilinen türdeki güvenlik açıklarını tespit etmek" veya "yeni güvenlik açıklarını keşfetmek" olmak üzere iki kısma ayrılmaktadır. Tez çalışması kapsamında bilinen türdeki güvenlik açıklarından yola çıkarak kodlarda zafiyet olup olmadığı tespit edilmeye çalışılmıştır. Bu amaçla denetimli öğrenmede yaygın olarak kullanılan Bayes ağları, Naif Bayes, rastgele orman, k en yakın komşu ve destek vektör makinesi tahmin yöntemleri ile kaynak kodu sınıflandırması yapılmıştır. Tahmin modelleri, bu alanda yapılan çalışmalarda sıklıkla kullanılan veri setleri ile eğitilmiş ve test edilmiştir. Modellerin tahmin doğruluğunu arttırmak amacıyla çıkarılan öznitelik vektörlerine öznitelik seçim yöntemleri uygulanmıştır.

Abstract:
Software and information systems are becoming more widespread and their use is increasing day by day. The changes in these systems also bring security vulnerabilities. Software security vulnerability is defined as a weakness in information systems, system security procedures, internal controls, or applications that can be exploited by a threat source. Security vulnerabilities in existing systems have been identified by experts in the field, and new ones are constantly being added.
Detecting and preventing security vulnerabilities at the beginning of the software development process is more cost-effective in terms of time and money compared to later stages. When security vulnerabilities in code are transferred to later stages, the solution becomes more difficult and the cost of solution increases. Therefore, it is important to detect security vulnerabilities in code during the coding stage.
In recent years, machine learning algorithms, successfully applied in areas such as image processing and natural language processing, have also been used to detect security vulnerabilities in code. Studies in this field are divided into two parts: "detecting known types of security vulnerabilities" or "discovering new security vulnerabilities". In this thesis, it is attempted to determine whether there are vulnerabilities in the code based on known types of security vulnerabilities. For this purpose, source code classification was performed using Bayesian networks, Naive Bayes, Random Forest, K-Nearest Neighbor, and Support Vector Machine prediction methods, commonly used in supervised learning. The prediction models were trained and tested with data sets frequently used in this field. Feature selection methods were applied to feature vectors to increase the accuracy of prediction models.