Finding weaknesses in web applications through the means of fuzzing
Master thesis
Permanent lenke
http://hdl.handle.net/11250/143817Utgivelsesdato
2008Metadata
Vis full innførselSamlinger
Sammendrag
NORSK: Håndtering av brukerinput i web-applikasjoner har ved flere anledninger vist seg å være en
vanskelig oppgave. Gang på gang har vi sett sårbarheter i slike applikasjoner på grunn av måten
input benyttes uten å sikres først. På grunn av web-applikasjoners dynamiske natur er det også
vanskelig å automatisere slike tester, da brukergrensesnittet er i stadig endring. En test-metode
må derfor ta hensyn til dette. Videre er det urimelig å teste alle mulige verdier en bruker kan
taste inn, og et subsett av mulige verdier må velges. Å overlate ansvaret for å finne dette utvalget
til programmereren kan vise seg å være uklokt, ettersom han ofte kun tester de verdiene han vet
er sannssynlige.
I denne oppgaven beskriver vi en metode og et verktøy for (semi)automatisk generering av
tilsynelatende tilfeldig test data (også kjent som «fuzzing»). Testmetoden og verktøyet vårt har
blitt anvendt på flere populære frie web-applikasjoner, og eksperimentet vårt viser at fra testerens
perspektiv er metoden rask, enkel og effektiv. Ved å benytte metoden og verktøyet klarte vi å
avdekke problemer i flere av applikasjonene vi testet. ENGELSK: The handling of input in web applications has many times proven to be a hard task, and have
time and time again lead to weaknesses in the applications. In particular, due to the dynamics
of a web application, the generation of test data for each new version of the application must be
cheap and simple. Furthermore, it is infeasible to carry out an exhaustive test of possible inputs
to the application. Thus, a certain subspace of all possible tests must be selected. Leaving test
data selection to the programmers may be unwise, as programmers may only test the input they
know they can expect.
In this thesis, we describe a method and tool for (semi) automatic generation of pseudo
random test data (also known as “fuzzing”). Our test method and toolkit have been applied to
several popular open source products, and our study shows that from the perspective of the
human tester, our approach to testing is quick, easy and effective. Using our method and tool we
have discovered problems and bugs with several of the applications tested.