Predicting software vulnerabilities using topic modeling with issues
- Global styles
- Apa
- Bibtex
- Chicago Fullnote
- Help
Abstract
Güvenli yazılım geliştirmek, 21. yüzyılın ve geleceğin önemli konularından bir tanesidir. Günümüzde bu önemli konu yazılım geliştirme yaşam döngüsü süreçlerinin ana temalarından biri haline gelmiştir. Güvenli yazılım geliştirme yaşam döngüsü adımlarında yapılan ihmaller yazılım güvenlik açıklarına neden olabilmektedir. Yazılım geliştirme aşamasında, geliştiriciler hem güvenli yazılım yazmak hem de hatasız bir iş çıkarmak hedefi ile çalışmaktadır. Bu hedef yanında zaman baskısı unutulmamalıdır. Güvenli yazılım geliştirmek yazılım yaşam döngüsünün bir parçasıdır ancak eğitim ve deneyim gerektirmektedir. Geliştiriciler kısıtlı zaman hedefleri içerisinde güvenli yazılım geliştirmeyi bazı zorlu durumlarda ikinci plana atabilmektedir. Bu zorlu durum karşısında yazılım güvenlik açıklarını ortaya çıkmadan tahmin edebilmek önemli hale gelmiştir. Güvenlik açıklarının tahmin edilmesi üzerine akademi ve endüstri tarafında bir çok çalışma gerçekleştirilmektedir. Yazılım güvenlik açıkları ile ilişki kurulabilecek var olan metrikler makine öğrenmesi algoritmaları ve istatistiksel yöntemler ile modeller kurularak tahminler yapılmaktadır. Var olan metrikler dışında ampirik yaklaşımlar ile yeni metrikler ortaya çıkarılmaktadır. Yapılan tüm çalışmalarının ortak amacı güvenlik açıklarını erken evrede tahmin ederek oluşabilecek zafiyetlerin önüne geçebilmektir.Bu tez çalışması ile makine öğrenmesi algoritmaları, metin madenciliği teknikleri ve doğal dil işleme yöntemleri kullanılarak yazılım güvenlik açıklarını tahmin etmek amaçlanmıştır. Makine öğrenmesi algoritmaları sayısal öğrenme ve model tanıma çalışmalarından geliştirilmiş bilgisayar biliminin ve yapay zekanın bir alt dalıdır. Günümüze kadar gerçekleştirilmiş güvenlik açıkları tahminleme çalışmalarında öncelikli tercih edilen yöntemlerdendir. Metin madenciliği metin verisi üzerinden yapısallaştırılmış veri elde etmeye olanak sağlar. Doğal dil işleme, doğal dildeki metinlerden ve/veya seslerden anlamlı ve istenen bilgilerinin bilgisayarın anlayabileceği anlamların çıkarılmasını sağlayan yöntemler bütünüdür, yapay zekanın ve dilbimin bir alt dalıdır. Yazılım güvenlik açıklıkları ile ilgili yapılan çalışmalarda çoğunlukla açık veri setleri kullanılmıştır. Güvenlik açıklarına dair kayıtlar kurum ve kuruluşlar için gizliliği yüksek seviyeli kayıtlardır. Bu sebeple yapılan çalışmalarda çoğunlukla açık kaynak sistemler üzerine gerçekleştirilmektedir. Bu tez çalışmasında iki farklı veri seti kullanılmaktadır. Bilgi teknoloji şirketine ait güvenlik tarama verileri ve açık kaynak olan WireShark projesinin verileri çıktı olarak kullanılmaktadır. Bilgi teknoloji şirketine ait veriler maskelenerek paylaşılmaktadır. Bu çalışma öncesi tez çalışmasında yer alan kişiler ile kurum arasında gizlilik anlaşması oluşturulmuştur. Yazılım güvenlik açıklarını tahmin etmede bir çok makine öğrenmesi algoritması kullanılmıştır. Literatürde bu tahmin problemi daha çok sınıflandırma problemi olarak ele alınmıştır. Sınıflandırma makine öğrenmesi algoritmalarından denetimli öğrenme başlığı altında yer alır. Amaç bir modülün güvenli ya da güvensiz olduğunu ayırt etmek olduğunda, sınıflandırma algoritmalarının kullanılması idealdir. Bu tez çalışmasında elde edilen veri problemin tipine karar vermede etkili olmuştur. Şirkete ait veriler için problem regresyon problemi olarak ele alınmıştır. Wireshark projesi verileri ile sınıflandırma algoritmaları kullanılmıştır. Regresyon da makine öğrenmesi algoritmalarından denetimli öğrenme başlığı altında yer alır. Regresyon probleminde amacımız güvenlik açığı sayısını, öncelik sınıfı bazında doğru tahmin eden formülü ortaya çıkarmak ve yazılım güvenlik açıklarının erken evrede tespitinin sağlanmasına katkıda bulunmaktır. Sınıflandırma probleminde ise açılan hata kayıtlarının yazılım güvenlik açığı ile ilişkisinin olup olmayacağı tahmin edilecektir. Tez çalışmasında makine öğrenme algoritmalarından karar ağaçları (classification and regression tree), destek vektör regresyonu (support vector regression) ve yapay sinir ağları (artificial neural network) algoritmaları regresyon problemi için seçilmiştir. Karar ağaçları sınıflandırma ve regresyon problemlerinde kullanılabilirler. Çok sayıda kayıt içeren bir veri kümesini, karar kuralları uygulayarak küçük kümelere bölmek için kullanılan bir algoritmadır. Destek vektör regresyonu, destek vektör makinalarından geliştirilmiştir. Önceki çalışmalarda, verilerin doğrusal olarak ayrılamadığı durumlarda destek vektörleri algoritmalarının problem çözmedeki performansı ve yeteneğinin daha iyi olduğu paylaşılmaktadır. Yapay sinir ağları, biyolojik nöronlardan esinlenilen bir hesaplama modelidir. Literatürde pek çok çalışmada tahmin algoritması olarak seçilmiştir. Sınıflandırma problemi için ise Naive Bayes, RandomTree ve Fisher's Linear Discriminant algortimaları kullanılmıştır.Yazılım güvenlik açıklarını tahmin etmede geliştirilen modellerde girdi olarak bir çok farklı metrik kullanılmıştır. Bu girdiler çoğunlukla yazılım kod metrikleri olmuştur. Yazılım kod metriklerinin yanı sıra hata kayıtları metrikleri, geliştirici bazlı istatistiksel ölçümler modellerde girdi olarak deneyimlenmiştir. Bu tez çalışmasında regresyon problemi model girdisi olarak sürüm sonrası olay kayıtları kullanılmaktadır. Tez çalışmasında kullanılan olay kayıtları aylık olarak raporlanmaktadır, çalışma 6 aylık veri üzerinde gerçekleştirilmiştir. Elde edilen 6 aylık veriden olay kayıtlarının açıklamalarına metin madenciliği ve doğal dil işleme adımları işletilmiştir. Doğal dil işleme alt başlıklarından biri olan konu modelleme olay kayıtlarının açıklama verileri üzerine uygulanmış, 5 ana konu 3516 adet olay kaydı veri kümesi kullanılarak belirlenmiştir. Konu modelleme yöntemi olarak Gizli Dirichlet Tahsisi (Latent Dirichlet Allocation) kullanılmıştır. Aynı doğal dil işleme adımları WireShark projesi verileri üzerinde de işletilmiştir. Wireshark projesinde veri seti 2017-2018 yıllarına ait verilerden oluşmaktadır. Model girdisi için 2017-2018 yıllarında açılan hata kayıtları kullanılmıştır. Literatürde incelenen çalışmalarda yazılım metrikleri üzerinde yapılan toplama ve kümeleme işlemlerinin model tahminlerini etkilediği paylaşılmaktadır. Bu sav üzerine çıkarılan 5 konu modeline toplama ve matematiksel işlemler geçrekleştirilerek yeni toplama metrikler oluşturulmuştur. Bu toplama metrikler minimum değer, maksimum değer, hoveer indeksi ve medyandır. Çalışmada model çıktısı olarak kullanılan yazılım güvenlik açığı kayıtları bir statik kod analizi aracı olan CxSAST raporlarından elde edilmiştir. Elde edilen raporda yazılım güvenlik açıkları önem derecesine göre düşük, orta ve yüksek olmak üzere 3 gruba ayrılmıştır. Bu üç önem derecesi ayrı ayrı çıktı olarak kullanılmış, toplamları da ayrıca çıktı olarak kullanılmıştır.Literatürde yapılan çalışmalarda çoğunlukla yazılım sınıfı boyutunda tahminleme gerçekleştirilmektedir. Bu tez çalışmasında elde edilen veri seti değerlendirildiğinde yazılım ürünü boyutunda tahminleme modeli kurulması kararlaştırılmıştır. Kurum verisi ile kurulan modeller yazılım ürününün yazılım güvenlik açığı sayısını tahminlemektedir.Tez çalışması kapsamında kurum verileri ile 2 farklı tahmin modeli kurulmuştur. Bu modellere model A ve model B isimleri verilmiştir. Model A için yazılım ürünü bazında açılan olay kayıtları açıklamaları birleştirilerek tekrar konu modellemesi algoritmasından geçirilmiştir. 3516 adet olay kaydı açıklaması kullanılarak oluşturulan modelden yazılım ürünü bazlı konu modeli skorları elde edilmiştir. Model A için ayrıca yazılım ürünü bazında açılan olay kaydı sayıları da girdi olarak kullanılmıştır. Bu olay kaydı sayıları kendi içlerinde 3 gruba ayrılmış olarak raporlanmaktadır, model A'da da bu sayırlar ayrı ayrı metrik olarak değerlendirilmiştir. Bu yazılım ürünü bazındaki 5 konu modeli skoru model A'nın girdilerini oluşturmaktadır. Model B için yazılım metrikleri üzerinde kullanılan toplama ve kümeleme işlemleri olay kaydı bazında elde edilen konu modeli skorlarına uygulanmıştır. Olay kayıtları yazılım ürünü bazında filtrelenmiş ve bahsi geçen 4 toplama metriği her konu modeli için hesaplanmıştır. Hesaplanan toplama metrikler Model B'nin girdilerine eklenmiştir. Her iki modelde de yazılım ürünü önem derecesi girdi olarak kullanılmıştır. Bir makine öğrenmesi modelinin doğruluğunun test edilmesi için veri kümesinin ne şekilde ayrılacağına çapraz doğrulama yöntemi ile karar verilmektedir. Bu tez çalışmasında 10 katmanlı çapraz doğrulama ve tek çıkışlı çapraz doğrulama yöntemleri kullanılmış ve sonuçları karşılaştırılmıştır. Elde edilen sonuçlar karşılaştırıldığında olay kayıtları ve yazılım güvenlik açıkları arasında düşük de olsa bir ilişki bulunmaktadır. Karar ağaçları modelinin diğer algoritmalara nazaran en doğru tahminleme sonucunu elde ettiği görülmüştür. Değişen algoritma parametlererine göre destek vektör regresyonu ve yapay sinir ağları karar ağaçları algoritmasının ardından gelmektedir.Sonuçların iyileştirilmesi için veri setinin genişletilmesi bir adım olabileceği düşünülmektedir. Tez çalışmasında kullanılan veri seti 6 aylık bir dönemi içermekte ve bir kuruma ait verilerdir. Developing secure software is one of the most important topics of the 21st century and the future. Today, this important topic has become one of the main themes in the software development life cycle. Omissions in software development life cycle processes can cause severe software vulnerabilities. During software development, developers work with the goal of both writing secure software and creating a flawless job under the time pressure. Developing secure software is part of the software lifecycle but requires training and experience. Developers tend to put secure software development to second place under challenging situations within limited time targets. It is important to be able to automatically predict software vulnerabilities under such stressful situations for saving time and effort of security analysts and testers. A number of studies have been carried out both in academia and industry in the context of predicting software vulnerabilities. Predictor models are proposed using metrics, statistical methods and machine learning algorithms to highlight residual vulnerabilities in software systems. The common purpose of all of the studies is to prevent the vulnerabilities that may occur by predicting the software vulnerabilities at an early stage. This thesis aims to predict software vulnerabilities by using machine learning algorithms, text mining techniques and natural language processing methods. Open datasets are mostly used in a built software vulnerability prediction model. Records of software vulnerabilities are highly confidential records for institutions and organizations. For this reason, vulnerability data recorded in open source systems are mostly used in the studies. In this thesis, security scans conducted in an information technology company is collected and masked in order to build vulnerability prediction models. Many machine learning algorithms have been used to predict software vulnerabilities. In the literature, this prediction problem is considered as a classification problem. Classification is located under the supervised learning heading from machine learning algorithms. It is ideal to use classification algorithms when the purpose is to distinguish whether a module is safe or unsafe. In this thesis, the problem is considered as a regression problem. Regression is also under the supervised learning heading from machine learning algorithms. Our goal is to reveal the formula that predicts the number of vulnerabilities on the basis of priority class and to contribute to the early detection of software vulnerabilities. In the thesis study, decision trees (support and regression), support vector regression and artificial neural network algorithms were selected from machine learning algorithms for a regression problem. Many different metrics have been used as input in the models developed to predict software vulnerabilities. These entries are mostly software code metrics. Software code metrics, as well as error records metrics, developer based statistical measurements, are experienced as inputs in models. In this thesis, post-release issue records are used as model input. Software vulnerability records used as model output in the study were obtained from CxSAST reports, a static code analysis tool. In the report, software vulnerabilities were divided into 3 groups as low, medium and high according to their severity. These three significance levels were used separately as outputs, and their totals were also used as outputs. Within the scope of the thesis study, 2 different prediction models were established. Models A and model B are given to these models. In this thesis, 10-fold cross-validation and leave-one-out cross-validation methods were used and the results were compared. When the results are compared, there is a low relationship between issue records and software vulnerabilities. The decision tree model has been found to have the most accurate estimation results compared to other algorithms. Support vector regression and artificial neural network decision trees follow the changing algorithm parameters. Extending the dataset to improve the results is thought to be a step. The dataset used in the thesis study includes a period of 6 months and data of an institution.
Collections