Fuzzing, sisteme beklenmedik, yarı geçerli, sıralı verilerin gönderimi gibi yöntemlerle sistemin iç yapısındaki hataları bulmayı hedefleyen Kapalı-Kutu yazılım test etme yöntemi. Fuzzing için çeşitli test yöntemleri isimlendirilmektedir:
- Olumsuz test yöntemi;
- Protokol mutasyon;
- Güvenilirlik test yöntemi;
- Sözdizimi test yöntemi;
- Hata enjeksiyonu;
- Yağmurlu-gün test yöntemi;
- Kirli test yöntemi.
Fuzzing yöntemlerinin uygulanmasını sağlamak için geliştirilen programlara ise Fuzzer denilmektedir.
Tarihçe
Fuzzing bazı yazılım mühendisleri tarafından yazılım testlerinde benzer yöntemler kullanılsa da, 1989 yılında Prof. Barton Miller ve öğrencileri tarafından geliştirilmiştir.
Fuzzing Çalışma Yöntemi
Bir fuzzing aracının çalışma prensibi sistemin beklediği geçerli bir cevabın bütünlüğü bozmadan beklenmedik veriler ile değiştirilmesi sonucu sistemin çökmesini sağlamaktır. Bu duruma uygun bir senaryo olarak; mobil uygulamaya kullanıcı adı ve parola ile geçerli bir giriş yapıldıktan sonra sunucudan dönen cevabın içerisinde kullanıcının gerçek ismi bulunduğu düşünülsün. Geçerli bir giriş işlemi gerçekleştikten sonra kullanıcının gerçek adının yerine bir milyon karakterin mobil uygulamaya gönderilmesi, ortaya bu veriyi tutan değişkenin saklayabileceği veri boyutu sorusunu ortaya çıkartır. Bu nedenle mobil uygulamanın çökmesi gerçekleşebilir.
Kullanılan Yöntemler
Bellek Taşması Hataları
Sistemin programlama aşamasında geçerli veri kontrollerin yapılmasını kontrol etmeyi hedefleyen hafızayı bozma saldırısıdır. Fuzzer aracı hafızada kaplayacağı yer olarak büyük veriler gönderir:
A A * 257 A * 513 A * 1024 A * 2049 A * 524289 A * 1048577
Karakter Biçem Hataları
Sistemin kullandığı sözdizimini hedef alan ve gelen verinin kontrol edilmemesi ile oluşan hatalardır. Bir Fuzzer aracı aşağıdaki yapıları kullanarak sistemin çökmesine yol açabilir:
%p%p%p%p %p%p%p%p%p%p%p%p%p%p %p * 257 %p * 513 %x%x%x%x %x%x%x%x%x%x%x%x%x%x %x * 257 %x * 513 %s%p%x%d %s%p%x%d%s%p%x%d%s%p%x%d
Sayısal İşlem Hataları
Hafızada kullandığı alan dışına çıkmasına sebep olan saldırı türlerinden kaynaklanan bir hata türüdür. Bellek Taşması Hatalarının işleyiş mantığı ile benzerdir.
-1 0 0x100 0x7fffffff 0x80000000
SQL Sorguları Değişimi
Web uygulamalarının sahip oldukları veritabanlarından sorgu dilini kullanarak hata mesajlarını elde etmek için kullanılır. Saldırgan yetkisi olmamasına rağmen elde edilen hata mesajları sayesinde veritabınından bilgi toplar. Kullanıcı arayüzünden gelen verilerin kontrol edilmemesinden dolayı bilgilere erişim kolaylıkla sağlanabilir:
durum:= "SELECT * FROM kullanıcılar WHERE isim= '" + kullanıcıAdı+ "';" kullanıcıAdı = a' or 'a'='a
' or 1=1-- ) UNION SELECT%20*%20FROM%20INFORMATION_SCHEMA.TABLES; Password:*/=1-- UNI/**/ON SEL/**/ECT '; EXECUTE IMMEDIATE 'SEL' || 'ECT US' || 'ER'
Kaynakça
- Fuzzing - https://www.owasp.org/index.php/Fuzzing[]
- OWASP Fuzzing Code Database -
- Fuzz Vectors - https://www.owasp.org/index.php/OWASP_Testing_Guide_Appendix_C:_Fuzz_Vectors 30 Mayıs 2013 tarihinde Wayback Machine sitesinde .
- Ari Takanen, Jared DeMott, Charlie Miller : Fuzzing for Software - Security Testing and Quality Assurance. ARTECH HOUSE
- Wikipedia article - http://en.wikipedia.org/wiki/Fuzz_testing 4 Temmuz 2013 tarihinde Wayback Machine sitesinde arşivlendi.
- Fuzzing-related papers - http://www.threatmind.net/secwiki/FuzzingPapers 29 Mart 2013 tarihinde Wayback Machine sitesinde .
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
Fuzzing sisteme beklenmedik yari gecerli sirali verilerin gonderimi gibi yontemlerle sistemin ic yapisindaki hatalari bulmayi hedefleyen Kapali Kutu yazilim test etme yontemi Fuzzing icin cesitli test yontemleri isimlendirilmektedir Olumsuz test yontemi Protokol mutasyon Guvenilirlik test yontemi Sozdizimi test yontemi Hata enjeksiyonu Yagmurlu gun test yontemi Kirli test yontemi Fuzzing yontemlerinin uygulanmasini saglamak icin gelistirilen programlara ise Fuzzer denilmektedir TarihceFuzzing bazi yazilim muhendisleri tarafindan yazilim testlerinde benzer yontemler kullanilsa da 1989 yilinda Prof Barton Miller ve ogrencileri tarafindan gelistirilmistir Fuzzing Calisma YontemiBir fuzzing aracinin calisma prensibi sistemin bekledigi gecerli bir cevabin butunlugu bozmadan beklenmedik veriler ile degistirilmesi sonucu sistemin cokmesini saglamaktir Bu duruma uygun bir senaryo olarak mobil uygulamaya kullanici adi ve parola ile gecerli bir giris yapildiktan sonra sunucudan donen cevabin icerisinde kullanicinin gercek ismi bulundugu dusunulsun Gecerli bir giris islemi gerceklestikten sonra kullanicinin gercek adinin yerine bir milyon karakterin mobil uygulamaya gonderilmesi ortaya bu veriyi tutan degiskenin saklayabilecegi veri boyutu sorusunu ortaya cikartir Bu nedenle mobil uygulamanin cokmesi gerceklesebilir Kullanilan YontemlerBellek Tasmasi Hatalari Sistemin programlama asamasinda gecerli veri kontrollerin yapilmasini kontrol etmeyi hedefleyen hafizayi bozma saldirisidir Fuzzer araci hafizada kaplayacagi yer olarak buyuk veriler gonderir A A 257 A 513 A 1024 A 2049 A 524289 A 1048577 Karakter Bicem Hatalari Sistemin kullandigi sozdizimini hedef alan ve gelen verinin kontrol edilmemesi ile olusan hatalardir Bir Fuzzer araci asagidaki yapilari kullanarak sistemin cokmesine yol acabilir p p p p p p p p p p p p p p p 257 p 513 x x x x x x x x x x x x x x x 257 x 513 s p x d s p x d s p x d s p x d Sayisal Islem Hatalari Hafizada kullandigi alan disina cikmasina sebep olan saldiri turlerinden kaynaklanan bir hata turudur Bellek Tasmasi Hatalarinin isleyis mantigi ile benzerdir 1 0 0x100 0x7fffffff 0x80000000 SQL Sorgulari Degisimi Web uygulamalarinin sahip olduklari veritabanlarindan sorgu dilini kullanarak hata mesajlarini elde etmek icin kullanilir Saldirgan yetkisi olmamasina ragmen elde edilen hata mesajlari sayesinde veritabinindan bilgi toplar Kullanici arayuzunden gelen verilerin kontrol edilmemesinden dolayi bilgilere erisim kolaylikla saglanabilir durum SELECT FROM kullanicilar WHERE isim kullaniciAdi kullaniciAdi a or a a or 1 1 UNION SELECT 20 20FROM 20INFORMATION SCHEMA TABLES Password 1 UNI ON SEL ECT EXECUTE IMMEDIATE SEL ECT US ER KaynakcaFuzzing https www owasp org index php Fuzzing olu kirik baglanti OWASP Fuzzing Code Database Fuzz Vectors https www owasp org index php OWASP Testing Guide Appendix C Fuzz Vectors 30 Mayis 2013 tarihinde Wayback Machine sitesinde Ari Takanen Jared DeMott Charlie Miller Fuzzing for Software Security Testing and Quality Assurance ARTECH HOUSE Wikipedia article http en wikipedia org wiki Fuzz testing 4 Temmuz 2013 tarihinde Wayback Machine sitesinde arsivlendi Fuzzing related papers http www threatmind net secwiki FuzzingPapers 29 Mart 2013 tarihinde Wayback Machine sitesinde