Yazılım güvenliği test ve değerlendirme aracı geliştirilmesi
Development of software security testing and evaluation
Yazar: GÜNCEL SARIMAN
Danışman: DOÇ. DR. ECİR UĞUR KÜÇÜKSİLLE
Süleyman Demirel Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı
Derece: Doktora, 2015
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control
Dizin: Nesneye dayalı yazılım = Object oriented software

Özet:
İnternetin günlük hayatın birçok alanında kullanılmasıyla birlikte, web ve mobil uygulamaların sayısı gün geçtikçe artmaktadır. Kişisel bilgilerin paylaşıldığı uygulamalardaki güvenlik ve kullanılabilirlik ise, kullanıcılar için dikkat edilmesi gereken bir faktör olmaya başlamıştır. İnternet ortamındaki güvenlik zafiyetlerinin birçoğunun geliştirilen yazılımlarda tespit edilmesi, güvenli yazılım geliştirmenin önemini giderek arttırmaktadır. Uygulamalardaki güvenlik açıklarının henüz ürün geliştirme aşamasında tespit edilmesi ise, yazılım firmaları ve kullanıcılar için ortaya çıkabilecek zararı büyük ölçüde azaltmaktadır. Web uygulamalarındaki güvenlik açıklarının tespit edilmesi aşamasında statik ve dinamik testler kullanılmaktadır. Dinamik testler daha çok uygulamaya sızarak gerçekleştirilmektedir. Statik testler ise yazılımın byte veya derlenmemiş kodları üzerinde yapılmaktadır.
Bu çalışmada, web uygulamalarındaki güvenlik zafiyetleri tespit edilerek programcılara, güvenlik açığı barındıran kod satırları hakkında bilgi verilmesi amaçlanmıştır. Çalışma kapsamında asp.net, php ve java dillerinde geliştirilen web uygulamalarındaki zafiyetleri tespit edebilmesi amacıyla, test ve değerlendirme yazılımı geliştirilmiştir. Yazılım, derlenmemiş kodları statik kod analiz yöntemiyle girdi denetimi, metrik analizi ve stil denetimlerine göre değerlendirmektedir. Geliştirilen yazılımın geçerliliğini test etmek için asp.net, php ve java da açık kaynak olarak sunulan ve aktif olarak kullanılan 5'er adet web projesi değerlendirilmiştir. Girdi denetimiyle uygulamalardaki satırlar zafiyetlerin türüne göre taranarak kullanıcılara detaylı rapor verilmiştir. Sql, Header, XPath Enjeksiyonu, XSS, CSRF, File Inclusion, Config tiplerinde tarama yapan yazılım elde ettiği sonuçları kullanıcıya grafiksel rapor ve detay olarak vermektedir. Yazılım, metrik analizi ile projelerin kaynak kod kalitesi hakkında bilgi vererek, bakım kolaylığı ve çevrimsel karmaşıklığı hakkında istatiksel veriler sunmuştur. Geliştirilen yazılımın son bölümünde, stil denetimi yapan modül, kodlama standartlarına göre projeleri değerlendirerek standartlara uygun olmayan kullanımları raporlamıştır.
Çalışmanın ikinci bölümünde yazılım güvenliği bilincini yaymak, güvenlik prensibini programcılara kazandırmak ve geliştiricilerin kodlar üzerinde güvenlik sınıflandırması yapmaları adına online güvenlik analiz yazılımı
geliştirilmiştir. Geliştirilen yazılım derlenmemiş kodlar üzerinde metrik analiz yaparak çevrimsel karmaşıklık, bakım endexi ve ağırlıklı metot sayısı metriklerinin eşik değerlerine göre güvenlik derecelendirilmesini Bayes sınıflayıcı ile yapmıştır. Asp.net ile geliştirilen 5 test projesi metrikler kullanılarak sınıflandırılmıştır.
Çalışma kapsamında asp.net, php ve java da geliştirilen projeler üzerinde yapılan analiz sonucunda Xss ve Sql enjeksiyonunun en çok karşılaşılan zafiyetler olduğu tespit edilmiştir. Online güvenlik analiz yazılımında test edilen projelerin sınıflandırma başarım oranının ise %85 ile %100 arasında değişmekte olduğu görülmüştür. Yazılım güvenliği alanında aynı anda asp.net, java ve php dillerinde geliştirilen projeleri test edebilen analiz aracı ve metriklere göre güvenlik sınıflandırması yapan web uygulaması, yazılım güvenliği alanında ticari yazılımlara göre alana detaylı ve farklı bir yaklaşım sunmuştur. Ulusal yazılım güvenliği alanında statik kod analiz yazılımlarının bulunmaması ve ulusal siber güvenlik alanında yapılan çalışmaların yetersizliği göz önüne alındığında çalışmanın alana katkıda bulunacağı düşünülmektedir.

Abstract:
With the increasing amount of internet use in our daily life, web and mobile applications have increased in numbers, too. Security and usability of these applications where users share their personal information have become to be a factor about which users should be careful. Identifying most of security vulnerabilities on the internet in developed software has increased importance of developing a secure software more and more. Detecting security vulnerabilities in applications during development can considerably decrease any impairment which may occur for software firms and users. Static and dynamic tests are used for finding out security vulnerabilities in web applications. Dynamic tests are applied to applications mostly as leakage tests. Static tests are applied by using byte or debugged code.
In this research, it is aimed to give information to programmers on code lines which include security leakage by detecting security vulnerabilities in web applications. Under the scope of this work, a testing and evaluation software was developed in order to find out the leakage in the web applications which were developed in Asp.net and Php and Java languages. The software evaluated debugged codes according to input validation, metric analysis and style checking with static code analysis method. In order to test validity of the developed software, five web projects for each ,which were presented as open source and used actively, were evaluated. With input validation, a detailed report was submitted by scanning the lines in the applications according to vulnerability types. The software scanned SQLI, XSS, CSRF, File Inclusion, Config vulnerabilities which are provided the results obtained with graphical reports and details. By giving information about resource code quality of the projects with metric analysis, the software presented statistical data about maintainability index and cyclomatic complexity. In the last section, the software, which checked style, reported uses which were not suitable by evaluating the projects according to coding standards. In the second section of this work, online security analysis software was developed in order to give information programmers about software security and help developers categorize security on codes. Bayes classifier was used for ranking security according to the thresholds of cyclomatic complexity, maintainability index and weighted method per class by applying
metric analysis on debugged codes. Five benchmark projects which were developed in Asp.net were classified by using metrics.
In this research, XSS and Sql injection were identified as mostly encountered vulnerabilities according to the results of the analysis on the projects which were developed in Asp.net, Php and Java. The success rate of classification of the projects which were tested in this online security analysis software was between %85 and %100. The analysis tool, which could test software security level in 3 languages, and the web application, which classified security according to metrics, presented a more detailed and different approach compared to commercial software. Taking into consideration the lack of static code analysis software in the field of software security in our country and very few number of researches on the field of national cyber security, it is believed that this study will contribute to the field.