Geri Dön

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

  1. Tez No: 895088
  2. Yazar: DİLEK MANDAL
  3. Danışmanlar: DR. ÖĞR. ÜYESİ İRFAN KÖSESOY
  4. Tez Türü: Yüksek Lisans
  5. Konular: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol, Computer Engineering and Computer Science and Control
  6. Anahtar Kelimeler: Belirtilmemiş.
  7. Yıl: 2024
  8. Dil: Türkçe
  9. Üniversite: Kocaeli Üniversitesi
  10. Enstitü: Fen Bilimleri Enstitüsü
  11. Ana Bilim Dalı: Bilgisayar Mühendisliği Ana Bilim Dalı
  12. Bilim Dalı: Bilgisayar Mühendisliği Bilim Dalı
  13. 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

  1. 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

    İngilizce

    2020

    Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrolİstanbul Teknik Üniversitesi

    Bilgisayar Mühendisliği Ana Bilim Dalı

    DR. ÖĞR. ÜYESİ AYŞE TOSUN

  2. 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

    İngilizce

    2023

    Bilim ve TeknolojiÜsküdar Üniversitesi

    Bilgisayar Bilimleri ve Mühendisliği Ana Bilim Dalı

    DOÇ. DR. AHMET ADİLLER

  3. 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

    İngilizce

    2023

    Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrolİstanbul Teknik Üniversitesi

    Bilgisayar Mühendisliği Ana Bilim Dalı

    DOÇ. DR. AYŞE TOSUN KÜHN

  4. 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

    İngilizce

    2024

    Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrolİstanbul Teknik Üniversitesi

    Kontrol ve Otomasyon Mühendisliği Ana Bilim Dalı

    PROF. DR. YAPRAK YALÇIN

  5. 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

    Türkçe

    2019

    Elektrik ve Elektronik Mühendisliğiİstanbul Teknik Üniversitesi

    İletişim Sistemleri Ana Bilim Dalı

    PROF. DR. MESUT KARTAL