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
- Tez No: 895088
- Danışmanlar: DR. ÖĞR. ÜYESİ İRFAN KÖSESOY
- Tez Türü: Yüksek Lisans
- Konular: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol, Computer Engineering and Computer Science and Control
- Anahtar Kelimeler: Belirtilmemiş.
- Yıl: 2024
- Dil: Türkçe
- Üniversite: Kocaeli Üniversitesi
- Enstitü: Fen Bilimleri Enstitüsü
- Ana Bilim Dalı: Bilgisayar Mühendisliği Ana Bilim Dalı
- Bilim Dalı: Bilgisayar Mühendisliği Bilim Dalı
- Sayfa Sayısı: 112
Ö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.
Özet (Çeviri)
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.
Benzer Tezler
- Predicting software vulnerabilities and vulnerability inducing code changes using deep neural networks
Derin sinir ağlarını kullanarak yazılım güvenlik açıklarını ve güvenlik açığına sebep olan kod değişikliklerini tahmin etme
SEFA EREN ŞAHİN
Yüksek Lisans
İngilizce
2020
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrolİstanbul Teknik ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
DR. ÖĞR. ÜYESİ AYŞE TOSUN
- Security challenges in open source and proprietary software
Açık kaynak ve özel yazılımda güvenlik zorlukları
MOHAMED SHARIF HUSSEIN
Yüksek Lisans
İngilizce
2023
Bilim ve TeknolojiÜsküdar ÜniversitesiBilgisayar Bilimleri ve Mühendisliği Ana Bilim Dalı
DOÇ. DR. AHMET ADİLLER
- Profiling developers to predict vulnerable code changes
Güvenlik açığı kod değişikliklerini öngörmek için geliştiricilerin profilini oluşturma
TUĞÇE COŞKUN
Yüksek Lisans
İngilizce
2023
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrolİstanbul Teknik ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
DOÇ. DR. AYŞE TOSUN KÜHN
- Development of certification-compliant safety-critical flight control software using a model-based design approach
Model tabanlı tasarım yaklaşımı kullanılarak sertifikasyon uyumluluğuna sahip emniyet kritik uçuş kontrol yazılımının geliştirilmesi
HAKAN BALLI
Yüksek Lisans
İngilizce
2024
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrolİstanbul Teknik ÜniversitesiKontrol ve Otomasyon Mühendisliği Ana Bilim Dalı
PROF. DR. YAPRAK YALÇIN
- Derin öğrenme yöntemi ile optik uydu görüntülerinden gemi tespiti
Ship detection by optical satellite images with deep learning method
OSMAN DUMAN
Yüksek Lisans
Türkçe
2019
Elektrik ve Elektronik Mühendisliğiİstanbul Teknik Üniversitesiİletişim Sistemleri Ana Bilim Dalı
PROF. DR. MESUT KARTAL