Fuzz-testen

Uit Wikipedia, de vrije encyclopedie

Fuzz-testen of fuzzing is een techniek die de software van een apparaat test. De techniek dient om programmeerfouten of beveiligingsgaten te vinden door willekeurige data, genaamd fuzz, in het systeem te sturen in een poging om het te doen crashen. Wanneer een kwetsbaarheid is gevonden zal de Fuzz-test de mogelijke oorzaak weergeven[1].

Geschiedenis[bewerken | brontekst bewerken]

De Fuzz-test is uitgevonden door Barton Miller aan de universiteit van Wisconsin in 1989. Het idee ontstond door een storm in de herfst van 1988. Door de hevige regen merkte Barton Miller op dat het regengeluid voor storingen zorgde bij programma's op zijn Unix systeem en sommige crashten zelfs. Wetenschappelijke nieuwsgierigheid dreef hem op onderzoek en de term werd bedacht bij het uitwerken van een klasproject dat Barton Miller gaf aan de universiteit. Het project bestond uit het bombarderen van een Unix systeem met willekeurige data tot het crashte om zo de betrouwbaarheid ervan testen. De term Fuzz werd gekozen omdat het een gevoel van toeval gaf. Snel werd ondervonden hoe effectief de fuzz-testen waren. Al de resultaten, programmacodes en gevonden bugs werden openbaar gemaakt waardoor andere programmeurs ook te werk konden gaan met fuzz-testen[2].

In 1991 ontstond een van de eerst fuzz-test programma's die gebruikt kon worden op Unix, namelijk Crashme.[3]

Hoe werkt het[bewerken | brontekst bewerken]

Een fuzz-test gaat als volgt te werk:

  1. Verbind je fuzz-test met een programma.
  2. Laat de fuzz-test verschillende willekeurige inputs doen in het programma.
  3. Kijk welke reacties het programma heeft op deze willekeurige inputs.
  4. Zie welke bugs er ontstaan en debug ze.

Deze willekeurige data wordt gebruikt om te zien hoe het programma gaat reageren wanneer het in contact komt met een onbekende input. Deze procedure blijft uitgevoerd worden tot het moment dat er een fatale foutmelding wordt gevonden. Het programma kan dan gedebugd worden zodat het op een correcte manier fouten kan weergeven en niet crasht. Hoewel de tests manueel uitgevoerd kunnen worden, gaat het nog altijd het snelst wanneer dit automatisch wordt gedaan[4].

Gebruik[bewerken | brontekst bewerken]

Fuzzing werkt het beste bij het zoeken naar problemen die ervoor zorgen dat een programma crasht, zoals buffer overflow, cross-site scripting, denial of service aanval (DoS)... Deze problemen worden vaak veroorzaakt door hackers die proberen zoveel mogelijk schade aan te richten in zo min mogelijke tijd. Hier kan de fuzz-test de fouten in de code die vaak overkeken worden, onthullen en zo zorgen voor een simpele en goedkope oplossing. Wel moet men rekening houden met het feit dat fuzz-testen niet zeer effectief zijn bij het testen naar andere specifieke fouten in de beveiliging, zoals bugs die er voor zorgen dat een programma niet crasht maar die uit zijn op het stelen van data zoals Spyware, Worms, Trojan horse, keyloggers... Ook vinden fuzz-testen vaak alleen maar de grote fouten en zo geeft een fuzz-test niet echt een compleet beeld van hoe goed beveiligd een programma is. Een fuzz-test is dan ook het effectiefst als het in samenwerking met andere tests wordt gebruikt[1][5].

Externe links[bewerken | brontekst bewerken]