Yazılım kaynak kodunda güvenlik açıklarının derin öğrenme ve makine öğrenmesi ile otomatik tespiti
Automatic detection of software vulnerabilities in source code using deep learning and machine learning
Yazar: DİLEK MANDAL
Danışman: DR. ÖĞR. ÜYESİ İRFAN KÖSESOY
Kocaeli Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı / Bilgisayar Mühendisliği Bilim Dalı
Derece: Yüksek Lisans, 2024
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control

Özet:
Teknolojinin hızlı gelişimiyle birlikte bilgisayar yazılımları, günlük yaşamımızın vazgeçilmez bir parçası haline gelmiştir. Bu yazılımlar, hayatımızın hemen her alanında kolaylık sağlarken, aynı zamanda çeşitli güvenlik sorunlarını da beraberinde getirmektedir. Yazılımlarda bulunan güvenlik açıkları, ciddi zararlarla karşı karşıya kalmamıza neden olabilir. 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.
Yazılım mühendisliğinde en önemli sorunlardan biri, yazılımlardaki güvenlik açıklarının varlığıdır. Saldırganlar, bu açıkları kullanarak sistemlere izinsiz erişim sağlayabilir, bilgi sızdırabilir, verileri bozabilir ve hizmet kesintilerine neden olabilirler. Bu sebeple, güvenli yazılım geliştirme süreci kadar, mevcut yazılımlardaki güvenlik açıklarının tespiti de kritik bir araştırma konusu olarak öne çıkmaktadır.
Bu çalışmada, yazılımın kaynak kodundaki güvenlik açıkları makine öğrenmesi ve derin öğrenme yöntemleri kullanılarak tahmin edilmiştir. Araştırmada, OWASP Benchmark test vakaları veri kümesi kullanılmıştır. Bu veri kümesi, Java kaynak kodlarından oluşmaktadır. Öznitelik çıkarımı için TF-IDF, Doc2Vec-DM ve DBOW mimarisi, FastText ve CodeBERT yöntemleri uygulanmıştır. Tahmin modelleri olarak ise Evrişimli Sinir Ağları, Karar Ağacı, Rastgele Orman, Lojistik Regresyon, Destek Vektör Makinesi ve K-en Yakın Komşu algoritmaları kullanılmıştır. Farklı öznitelik çıkarımı yöntemleri ve tahmin modellerinin kombinasyonları karşılaştırılarak elde edilen sonuçlar değerlendirilmiş ve bazı araştırma sorularına cevap aranmıştır.
Bu çalışma, yazılım güvenliği alanında makine öğrenmesi ve derin öğrenme yöntemlerinin etkinliğini inceleyerek, güvenlik açıklarının tespiti konusunda katkı sağlamayı amaçlamaktadır. Elde edilen bulgular, güvenli yazılım geliştirme süreçlerinin iyileştirilmesine yönelik önemli ipuçları sunmaktadır.
Güvenlik açıklarının tespiti ve giderilmesi, sadece bireysel kullanıcıların değil, aynı zamanda kurumsal düzeyde büyük işletmelerin ve devlet kurumlarının da güvenliğini sağlamada kritik öneme sahiptir. Bu nedenle, araştırmamızın bulguları, geniş bir uygulama yelpazesi için geçerli olabilecek pratik çözümler sunmaktadır. Gelecekte, yazılım güvenliğinde yapay zeka ve makine öğrenmesi tekniklerinin daha da gelişmesi ve yaygınlaşması beklenmektedir. Bu bağlamda, çalışmamız, bu alandaki literatüre değerli katkılar sağlayacak ve gelecekte yapılacak araştırmalara sağlam bir temel oluşturacaktır.

Abstract:
With the rapid advancement of technology, computer software has become an indispensable part of our daily lives. While these software applications facilitate various aspects of our lives, they also bring about several security issues. Security vulnerabilities in software can expose us to significant risks. A software security vulnerability is defined as a weakness in the information system, security procedures, internal controls, or implementation that can be exploited by a threat source.
One of the most critical issues in software engineering is the existence of security vulnerabilities in software. Attackers can exploit these vulnerabilities to gain unauthorized access to systems, leak information, corrupt data, and cause service disruptions. Therefore, identifying existing security vulnerabilities in software, in addition to developing secure software, is considered a crucial research area.
In this study, security vulnerabilities in software source code were predicted using machine learning and deep learning methods. The OWASP Benchmark test cases dataset was used in this research. This dataset consists of Java source codes. For feature extraction, TF-IDF, Doc2Vec-DM and DBOW architectures, FastText, and CodeBERT methods were applied. For prediction models, Convolutional Neural Network , Decision Tree, Random Forest, Logistic Regression, Support Vector Machine, and K-Nearest Neighbors algorithms were employed. The results obtained from different combinations of feature extraction methods and prediction models were compared, and several research questions were addressed.
This study aims to contribute to the detection of security vulnerabilities by examining the effectiveness of machine learning and deep learning methods in the field of software security. The findings provide important insights for improving secure software development processes.
The detection and remediation of security vulnerabilities are critically important not only for individual users but also for large enterprises and government institutions at the organizational level. Therefore, the findings of our research offer practical solutions that can be applied to a wide range of scenarios. In the future, it is expected that artificial intelligence and machine learning techniques will further advance and become more widespread in the field of software security. In this context, our study provides valuable contributions to the literature in this area and establishes a solid foundation for future research.