Kaynak kod güvenliğinde statik analiz ölçütleri ile performans değerlendirmesi
Performance evaluation with static analysis methods in source code security
Yazar: TOLUN ARDAHANLI
Danışman: DR. ÖĞR. ÜYESİ FARUK BULUT
Haliç Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı / Bilgisayar Mühendisliği Bilim Dalı
Derece: Yüksek Lisans, 2019
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control

Özet:
Bilişim sektöründe aktif olarak çalışan yazılımcıların geliştirdiği yazılım ürünleri üzerinde hatalar bulunmasının yanı sıra güvenlik zafiyetleri de sıklıkla görülmektedir. Geliştirilen yazılımın ne seviyede güvenli olduğu herhangi bir standart çerçevesinde değerlendirilmemektedir. Yazılım kaynak kodlarında olası güvenlik açıklarını keşfetmek için Statik Kod Analiz araçları kullanılmaktadır. Fortify, Polyspace, SonarCloud (open), Checkmarx, AppScan ve AttackFlow gibi birçok ücretli ve ücretsiz test aracı mevcuttur ve bu araçlar yazılımların değerlendirmesini yapmaktadır. Araçlar kaynak kodları analiz ederken yanlış pozitif (False Positive), yanlış negatif (False Negative), doğru pozitif (True Positive) ve doğru negatif (True Negative) gibi değerlendirme sonuçları üretirler. Yanlış pozitif (False Positive), kaynak kodda gerçekte güvenlik sorunu olmayan ve statik analiz araçları tarafından yanlışlıkla var olduğu tespit edilen güvenlik açıklarını tanımlamaktadır. Yanlış negatif (False Negative) ise statik kod analiz araçları ile bulunamayan ve gerçekte mevcut olan güvenlik açığı şeklinde ifade edilmektedir. Güvenlik taraması sırasında, yanlış negatif (False Negative) ve yanlış pozitif (False Positive) lerden dolayı, taramayı yapan, taramayı yaptıran, ilgili değerlendirme aracını satın almak üzere olan ve aynı zamanda güvenlik taramasından geçirilmemiş programı canlı sistemlerinde barındırarak hizmet vermek zorunda olan aktörler mağduriyet yaşamaktadır.
Bu çalışmanın temel amacı, farklı statik kod analiz araçlarının, güvenlik açıklarını tespit etme performanslarını analiz etmektir. Aynı zamanda doğruluğundan emin olunulmuş ve tekrarlanabilir bir yöntemi ortaya koyarak objektif değerlendirme sonuçları ile doğabilecek sorunların önüne geçmektir. Bu tez çalışması içerisinde yazılım sektöründe kullanılan Fortify, Polyspace, SonarCloud (open), Checkmarx, AppScan ve AttackFlow gibi test araçlarından sadece Polyspace ve Fortify incelenmiştir. Çalışma içerisinde kâr amacı barındıran ticari ürün Fortify ile akademik çalışmalarda kullanılan Polyspace ürünleri incelenerek performansları kıyaslanmıştır.
Bu çalışmada ilk olarak seçilen JULIET test veri kümesi üzerinde yazılım test araçlarının başarımları incelenmiştir. Daha sonra ilgili test araçları farklı istatistiksel yöntemler kullanılarak analiz edilmiş ve kıyaslanmıştır. Aşamalara ait sürelerin kısaltılabilmesi için filtreleme ve otomatize etmek amacıyla çeşitli betikler oluşturulmuştur. Ayrıca başarımları hesaplayabilmek adına SCATPA adı verilen bir proje de geliştirilmiştir. Gerçekleştirilen çalışmada aynı zayıflık grubunu (Common Weakness Enumeration, CWE) test etmeyi amaçlayan yazılım araçları birbirleri ile karşılaştırılmış ve ilgili araçların farklılıkları (avantaj – dezavantajları) ortaya konmuştur.
Bu tez çalışması alanında bir ilk olup, ilgili alanda çalışmak isteyen şahıs ve kuruluşlar için yol gösterici olması hedeflenmiştir.

Abstract:
Software vulnerabilities developed by software developers working actively in the IT sector, as well as security vulnerabilities are frequently seen. The level of security of the developed software is not evaluated in any standard framework. Static Code Analysis tools are used to discover possible vulnerabilities in software source codes. There are many paid and free testing tools such as Fortify, Polyspace, SonarCloud (open), Checkmarx, AppScan and AttackFlow, and these tools evaluate the software. While analyzing source codes, these tools produce evaluation results such as false positive, false negative, true positive and true negative. A false positive identifies vulnerabilities in the source code that actually do not have security problems and are found to be inadvertently present by static analysis tools. A false negative is expressed as a security vulnerability that cannot be found with static code analysis tools. During the security scan, who is scanning, who is requesting to make this scan, companies that are going to buy a scanning tool and companies that have to serve by hosting a security-free program in their live systems can be a victim, because of false negative and false positives.
The main objective of this study is to analyze the performance of different static code analysis tools and their detection vulnerabilities. At the same time to ensure that the accuracy of a reproducible method to reveal the results of the objective assessment can be avoided. Only Polyspace and Fortify were included in the test tools available on the market, such as Fortify, Polyspace, SonarCloud (open), Checkmarx, AppScan and AttackFlow. In the study, the product of the profit, Fortify, and Polyspace products which is used in academic studies were examined and their performances were compared.
In this study, the performance of software testing tools on the JULIET test data set was investigated. Then, the related test tools were analyzed and compared using different statistical methods. In order to shorten the time of the stages, various scripts have been created for filtering and automating. In addition, a project called SCATPA was developed in order to calculate the performance. In the study, the software tools aimed at testing the same weakness group (Common Weakness Enumeration, CWE) were compared with each other and the differences of the related tools; advantages - disadvantages have been demonstrated.
As the thesis study is a first in its field, it is aimed to be a guide to the individuals and organizations who want to work in this field.