Farklı mutasyon stratejileri kullanılarak XML temelli sistemlerde güvenlik zafiyetlerinin fuzz testi ile tespiti
2025
0 views
0 downloads
Advisor: Prof. Dr. Nejat Yumuşak ; Dr. Vahid Garousi
Abstract (TR)
Fuzz testleri, yazılım sistemlerindeki hataları ve güvenlik açıklarını tespit etmek için kullanılan otomatize edilmiş işlemler bütünü olarak bilinir. Genel itibarıyla fuzz testleri üçe ayrılmaktadır; kara kutu testler, beyaz kutu testler ve gri kutu testler. Fuzz testlerini başlatmak için kullanılan girdi verilerinin üretimi açısından ise fuzz testleri ikiye ayrılır; birisi dilbilgisi tabanlı, diğeri ise mutasyon tabanlıdır. Dilbilgisi tabanlı fuzz testi, bir spesifikasyondan girdiler üretir ve karmaşık yapılandırılmış girdiler alırken, mutasyon tabanlı fuzz, iyi biçimlendirilmiş başlangıç dosyalarını ve soyut sözdizimi ağaçlarını rastgele değiştirerek girdiler üretir. Dilbilgisi veya mutasyon tabanlı çalışan fuzz testi yaklaşımları vardır, ancak bunların hata tespit yeteneklerini karşılaştıran yeterli sayıda vaka çalışması yoktur. Bu alandaki deneysel kanıtlara katkıda bulunabilmek için, bu vaka çalışması gri kutu fuzz testini farklı mutasyon stratejileriyle karşılaştırarak üç açıdan etkinliklerini değerlendirir: hata tespit etkinliği, hata tespit performansı ve tespit edilen hata türleri. Ayrıca, farklı başlangıç oluşturma tekniklerinin fuzz testinin etkinliğine olan etkilerini araştırıyoruz. Fuzz testi yürütmeleri için üç farklı test edilen sistem seçilmiştir; XML ayrıştırıcıları, Libxml2, Apache Xerces ve Expat. Fuzz testlerini uygulamak için farklı mutasyon stratejilerine sahip iyi bilinen fuzz araçları olan AFL (American Fuzzy Lop) ve Superion aracı kullanılmıştır. Genele açık olan tohumlar ve PCSG (Olasılıksal Bağlam Duyarlı Dilbilgisi) tabanlı tohumlar kullanılarak tohum üretiminin fuzz testlerine olan etkilerini bulmak için araştırma yürütülmüştür. Hata tespiti etkinliği ve performansı açısından, çökme sayısı ve üretilen test vaka dosya sayısı ölçülmüştür. Kullanılan mutasyon stratejileri açısından, sonuçlar bit/bayt düzeyindeki mutasyon stratejisinin ağaç düzeyindeki mutasyon stratejisinden daha fazla hata tespit ettiğini göstermektedir. Fuzz testleri sonuçlarına göre, PCSG tabanlı tohumlar genele açık olanlardan daha fazla çökme tespit etmeye yardımcı olmaktadır. Test vaka dosyası üretimi açısından, genele açık olarak seçilen tohumlara kıyasla PCSG tabanlı tohumlar için daha az test vakası üretilirken, bit/bayt düzeyindeki mutasyonlar ağaç düzeyindeki mutasyonlara kıyasla daha fazla test vakası ile sonuçlanmaktadır. Ampirik sonuçlar, fuzz testlerinin çökme tespit yeteneklerinin kullandığı mutasyon stratejisine göre önemli ölçüde farklılık gösterdiğini ortaya çıkarmıştır. Fuzz testleri, yazılımın çalışamaz hale geldiği durumları ve güvenlik açıklarını otomatik şekilde bulmak için yaygın olarak kullanılan etkili bir tekniktir. Fuzz testlerinde, sistem başka bir program tarafından oluşturulan sürekli ve rastgele test durumlarıyla test edilir. Aynı zamanda, sistem bu girdiyi işlerken herhangi bir hatayı ortaya çıkarmak için izlenir. Bu nedenle, her fuzz test metodunun yürütme motorunda çalıştırılacak test durumlarını otomatik olarak oluşturması gerektiğinden girdi oluşturma, test süreci için önemlidir. Fuzz testlerinde girdi ve test senaryoları oluşturmak için iki temel biçim vardır: mutasyon ve dilbilgisi tabanlı girdi oluşturma. Birincisi girdi biçiminin farkındayken, ikincisi değildir. Birincisi bir referans girdisinde dönüşümler içerirken, ikincisi sistem spesifikasyonunu kullanır. Mutasyon tabanlı fuzz test metotları çoğunlukla kapsama alanından yoksundur ve beklenenden farklı girdilerle daha az etkilidir. Mutasyon tabanlı yaklaşımlarda, girdideki değişiklik bit/bayt düzeyinde gerçekleştirilir. Bu yöntemler, yeni dosyalar oluşturmak için bazı bitleri rastgele çevirir, siler veya kopyalar. Ancak, rastgele bit çevirmelerinin karmaşık dosya biçimlerini işleyen uygulamalar için geçerli dosyalar üretmesi olası değildir. Bu nedenle, mutasyona dayalı fuzz testi, iyi yapılandırılmış girdileri (örneğin XML, JavaScript) işleyen programlar için pek uygun değildir. Bu tür programlar girdileri üç temel aşamada alır ve işler; sözdizimi ayrıştırma, anlamsal kontrol ve uygulama yürütme. Mutasyona dayalı fuzz testleri tarafından üretilen çoğu kötü biçimli girdi, sözdizimi ayrıştırmada başarısız olur ve bu nedenle işlemenin erken bir aşamasında reddedilir. Dilbilgisi tabanlı fuzz testleri, girdi modelleri veya veri parçalarının biçim ve bütünlük kısıtlamalarını belirleyen bağlamdan bağımsız dilbilgisi gibi iyi tanımlanmış bir spesifikasyona göre girdiler üretir. Mutasyon tabanlı yaklaşımların aksine, dilbilgisi tabanlı yaklaşımlar fuzz testlerinde sözdizimi ayrıştırma aşamasını daha kolay geçer. Ancak bu yöntemle üretilen test senaryolarının çoğu genellikle anlamsal kontrolden geçmez. Bununla birlikte, anlamsal olarak geçerli test senaryolarının sistematik olarak üretilmesi genellikle çözülmesi oldukça masraflı ve zor bir durumdur. Bu aynı zamanda programın hem sözdizimsel hem de anlamsal özelliklerinin farkında olan akıllı bir fuzz test aracı geliştirmek için yaygın olarak bilinen bir sorundur. Bu nedenle, dilbilgisi tabanlı fuzz testlerinde üretilen girdinin yalnızca küçük bir kısmı, derin hataların gizlendiği uygulama yürütme aşamasına ulaşabilir; bu nedenle, uygulama kodunun çoğuna erişilemez ve sistemde çökmeye neden olan vakaların çoğu açığa çıkarılamaz. Bu sorunun üstesinden gelmek için, PCSG'ye (Olasılıksal Bağlam Duyarlı Dilbilgisi) dayalı olarak çalışan bazı yaklaşımlar vardır. Bu yaklaşımlar, dil bilgisi ve anlam bilim kurallarının bilgisini otomatik olarak çıkarmak ve ardından çökmeye neden olan durumları tetiklemesi beklenen girdiler üretmek için çok sayıda örnek kullanır. Bu akıllı girdilerin, anlam bilimsel ayrıştırma aşamasını kolayca geçebildiği ve uygulama yürütme aşamasına ulaşabildiği için, test edilen uygulamada gizli olan bilinmeyen hata ve çökmeleri tetikleme şansının daha fazla olduğu iddia edilmektedir. Bu nedenle, öğrenme algoritması açısından üretilen akıllı girdilerin etkinliğini, genele açık girdi dosyalarına kıyasla çökmeleri bulma açısından daha iyi performans gösterebileceklerini ortaya çıkarmaya yönelik artan bir ihtiyaç vardır. Bu tez çalışmasında, iyi yapılandırılmış girdiler alan XML ayrıştırıcıları için fuzz testi yürütmeleri gerçekleştirme açısından bu iki tür girdi dosyası arasında kapsamlı bir karşılaştırma yaparak bu ihtiyaca vurgu yapmaktayız. Bu tez çalışması boyunca, fuzz testi yürütmeleri için AFL ve Superion olmak üzere iki ana test aracı kullanıyoruz. AFL, CGF (Kapsam Rehberli Fuzz Testi) prensiplerine göre çalışan son teknoloji gri kutu test aracıdır. Superion, ayrıştırılmış girdilerin soyut sözdizimi ağaçlarını (AST'ler) kullanarak ağaç düzeyinde test girdilerini kırpmak için dilbilgisi farkında bir kırpma stratejisi kullanır. AFLdeki mutasyonlar dilbilgisi körü olup bit/bayt düzeyinde çalışırken, Superiondaki mutasyonlar dilbilgisi farkındadır ve ağaç düzeyinde işlev görür. Ayrıca, AFLdeki dilbilgisi körü mutasyon stratejilerinin etkinliği ve verimliliği engellediği iddia edilmektedir. Öte yandan, Superion iyi yapılandırılmış girdi dosyaları için oldukça uygundur, yani fuzz testi için geçerli girdiler üretebilir. Bu anlamda, üretilen ve genele açık girdi dosyaları için nasıl performans gösterdiklerini bulmak için bit/bayt ve ağaç düzeyindeki mutasyonlar arasında karşılaştırma yapılması da gerekir. Bu açıdan, test çalışmamız ayrıca farklı mutasyon stratejilerinin ve bunların çökme algılama yetenekleri üzerindeki etkilerinin karşılaştırılmasını içermektedir. Giriş oluşturma yöntemlerine ve mutasyon stratejilerine ek olarak, fuzz testlerindeki bir diğer ölçüt kod kapsamıdır. Bu, fuzz testi yürütmesinin test edilen programın farklı bölümlerine ne kadar ulaşabildiğiyle ilgilidir. Fuzz testi araçlarının yeni girdinin kalitesini değerlendirmek ve bu girdinin oluşturulmasını yönlendirmek için bir yardımcı işleve ihtiyacı vardır. Bu yardımcı işlev temelde kod kapsamı olabilir. Bu bağlamda, yardımcı işlev olarak mutasyon testi ile gri kutu fuzz testini yönlendirmek için bazı çalışmalar vardır. Çalışmalara göre, mutasyon testinin etkili gövde giriş dosyaları oluştururken kod kapsamına bir alternatif olduğu gösterilmiştir, bu da bir test gövdesinin yapay olarak enjekte edilen hataları algılama yeteneğine göre değerlendirilebileceği anlamına gelir. Ayrıca çalışma, fuzz testi kalitesini değerlendirmek için bir ölçüt olarak mutasyon puanını kullanır. Gri kutu fuzz testi yaklaşımları için bu çalışma, vaka çalışması araştırması ilkelerine dayanarak yürütülmüştür. Vaka çalışmamızın doğası hem "keşifsel" hem de "iyileştirici"dir; amacımız (fuzz test yaklaşımını geliştirme sürecinde) ne olduğunu bulmak, yeni içgörüler aramak ve takip iyileştirmeleri (fuzz test yaklaşımında) ve araştırma (keşifsel yön) için fikirler ve hipotezler üretmektir. Ayrıca, "çalışılan olgunun" test etkinliğini ve verimliliğini iyileştirmek istediğimiz için çalışmanın "iyileştirici" yönleri vardır.
Author
Dr. Şerafettin Şentürk
Institution
How to Cite
Şerafettin Şentürk (Doktora Tezi). Farklı mutasyon stratejileri kullanılarak XML temelli sistemlerde güvenlik zafiyetlerinin fuzz testi ile tespiti, 2025, Sakarya University.
Keywords
License
Tüm Hakları Saklıdır
This work is shared under the specified license terms.
More theses from Sakarya University
- Yoğunluk fonksiyonel teorisi kullanılarak pil malzemelerinin hesaplamalı incelenmesi(2023)
- Hacı Ahmed b. Seyyid el-Bigavî ve Terceme-i Avârifu'l-maârif'i (22-43. bablar)(2024)
- Karbazol substıtüye 3,4-dihydropyrimidin-2(1h)-tion türevi bileşiklerin sentezi(2024)
- Geri dönüştürülebilir atıkların derin öğrenme modelleri ile sınıflandırılması: Veri seti boyutunun etkisi üzerine bir karşılaştırma(2024)
- Türk mitolojisinde kurban, kutsal şiddet ve günah keçisi motiflerinin hermeneutik incelemesi(2024)
- Tiyokalkon ile sübstitüe edilmiş metalli ftalosiyaninlerin sentezi ve karakterizasyonu(2018)