Efficient fuzzing payload generation for mobile application security testing
Loading...
URL
Journal Title
Journal ISSN
Volume Title
Perustieteiden korkeakoulu |
Master's thesis
Unless otherwise stated, all rights belong to the author. You may download, display and print this publication for Your own personal use. Commercial use is prohibited.
Authors
Date
2024-05-20
Department
Major/Subject
Computer Science
Mcode
SCI3042
Degree programme
Master’s Programme in Computer, Communication and Information Sciences
Language
en
Pages
58
Series
Abstract
The topic of this Master's thesis focuses on developing efficient fuzzing payloads for security testing of Android and iOS mobile applications. Fuzzing is a technique which has mostly been used to detect crashes, errors and performance issues within an application by using random and unpredictable inputs. Modern security issues are on a higher abstraction level and require more specific inputs to be discovered and exploited. Many extremely efficient algorithms for fuzzing have been developed in the past, but the entropy is too large for them to be efficient, if purely random inputs are generated. This has led to web application fuzzer tools which have specialized inputs for finding specific target problems. The outcome of the research includes a method, which produces and selects payloads to use for fuzzing a mobile application. The variables that affect these are the input formats of the target app and the vulnerabilities that want to be searched for. Depending on the available static analysis and the user, their accuracy can be adjusted. Examples and evaluation of it's use in practice have been included for several important vulnerability types. The main problem that was solved consisted of constructing input languages of mobile applications in context-free grammar format and optimizing the generation of payloads from the grammars. As Android applications are Java-based, fuzzing payloads had to adhere to Java syntax in many cases, and serialized Java-classes are used to transmit data. One of the main improvements found in this research is generating payloads for Java programs which are specifically running as an Android application, leading to much more optimal use. This also does not require perfect knowledge of the source code of the application, so applications can be tested based on entirely public information on a regular Android device. This reduces the resources required for a testing environment.Tämän diplomityön aiheena on tehokkaiden fuzz-testaukseen soveltuvien syötteiden kehittäminen Android- ja iOS-sovellusten tietoturvatestaukseen. Fuzz-testaus on menetelmä, jota on yleisesti käytetty sovelluksen kaatumisten, virheiden ja suorituskykyongelmien löytämiseen käyttämällä sattumanvaraisia ja ennalta-arvaamattomia syötteitä. Nykyiset tietoturvaongelmat ovat korkeammalla abstraktiotasolla ja niiden löytäminen ja hyväksikäyttäminen vaatii yksityiskohtaisempia syötteitä. Monia hyvin tehokkaita algoritmeja fuzz-testaukseen on kehitetty, mutta niiden entropia on liian suuri estääkseen tehokkaan käytön, jos generoidut syötteet ovat täysin sattumanvaraisia. Tämä on johtanut web-sovellusten fuzz-työkaluiden kehittämiseen, jotka käyttävät erityisiä syötteitä tiettyjen kohteena olevien ongelmien löytämiseksi. Tämän tutkimuksen tulos sisältää menetelmän, joka tuottaa ja valitsee syötteitä käytettäväksi mobiilisovelluksen fuzz-testaamiseen. Niihin vaikuttavat tekijät sisältävät kohdesovelluksen syötemuodot ja kohteena olevat tietoturvaongelmat, joita halutaan etsiä. Riippuen saatavilla olevasta staattisen analyysin mahdollisuudesta ja käyttäjästä, syötteiden tarkkuutta voidaan säätää. Esimerkkejä ja arviointia menetelmän käytöstä käytännössä on sisällytetty muutamalle tärkeälle haavoittuvuustyypille. Ratkaistu pääongelma muodostui syötekielien rakentamisesta mobiilisovelluksille kontekstivapaiden kielioppien muodossa ja niistä generoitujen syötteiden optimoinnista. Koska Android-sovellukset ovat Java-pohjaisia, testaussyötteiden on monissa tapauksissa noudatettava Javan syntaksia ja serialisoituja Java-luokkia käytetään sovellusten välisessä tiedonsiirrossa. Yksi tutkimuksen löytämistä parannuksista on syötteiden generointi Java-ohjelmille, jotka ovat nimenomaan Android-sovelluksia, mahdollistaen lähes optimaalisen testauksen. Tämä ei myöskään vaadi täydellistä tietoa sovelluksen lähdekoodista, joten sovelluksia voidaan testata perustuen täysiin julkiseen tietoon tavallisella Android-laitteella. Tämä vähentää testiympäristöön vaadittavia resursseja.Description
Supervisor
Gunn, LachlanThesis advisor
Toosi, TopiKeywords
Android, iOS, mobile application, security, fuzzing, programmatic testing