Fuzz Testing (Fuzzing) Tutorial: Wat is, Types, Tools & Voorbeeld

Fuzz-testen

Fuzz-testen of Fuzzing is een softwaretesttechniek waarbij ongeldige of willekeurige gegevens, FUZZ genaamd, in het softwaresysteem worden geplaatst om coderingsfouten en mazen in de beveiliging te ontdekken. Het doel van fuzz-testen is het invoegen van gegevens met behulp van geautomatiseerde of semi-geautomatiseerde technieken en het testen van het systeem op verschillende uitzonderingen, zoals systeemcrashes of falen van ingebouwde code, enz.

Fuzz-testen is oorspronkelijk ontwikkeld door Barton Miller aan de Universiteit van Wisconsin in 1989. Fuzz-testen of fuzzing is een softwaretesttechniek en het is een soort Beveiligingstests .

Waarom Fuzz-testen doen?

  • Doorgaans worden bij Fuzzy-tests de ernstigste beveiligingsfouten of defecten gevonden.
  • Fuzz-testen geven een effectiever resultaat bij gebruik met Black Box-testen , bètatests en andere foutopsporingsmethoden.
  • Fuzz-testen worden gebruikt om de kwetsbaarheid van software te controleren. Het zijn zeer kosteneffectieve testtechnieken.
  • Fuzz-testen is een van de black box-testtechnieken. Fuzzing is een van de meest voorkomende methoden die hackers gebruiken om de kwetsbaarheid van het systeem te vinden.

Hoe Fuzz-testen te doen?

De stappen voor fuzzy-testen omvatten de basisteststappen-

Stap 1) Identificeer het doelsysteem

Stap 2) Identificeer ingangen

Stap 3) Fuzzed-gegevens genereren

Stap 4) Voer de test uit met behulp van vage gegevens

Stap 5) Systeemgedrag controleren

Stap 6) Log defecten

Voorbeelden van fuzzers

  • Op mutaties gebaseerde fuzzers bestaande gegevensvoorbeelden wijzigen om nieuwe testgegevens te maken. Dit is de zeer eenvoudige en ongecompliceerde benadering, dit begint met geldige voorbeelden van het protocol en blijft elke byte of elk bestand verminken.

  • Generatie-gebaseerde fuzzers nieuwe gegevens definiëren op basis van de invoer van het model. Het begint vanaf het begin input te genereren op basis van de specificatie.

  • PROTOCOL-BASED-fuzzer , is de meest succesvolle fuzzer om gedetailleerde kennis te hebben van het protocolformaat dat wordt getest. Het begrip hangt af van de specificatie. Het houdt in dat een array van de specificatie in de tool wordt geschreven en vervolgens met behulp van een modelgebaseerde testgeneratietechniek door de specificatie gaat en onregelmatigheden in de gegevensinhoud, volgorde, enz. enz. Fuzzer kan testgevallen genereren van een bestaande, of ze kunnen geldige of ongeldige invoer gebruiken.

Er zijn twee beperkingen van op protocol gebaseerde fuzzing:

  1. Het testen kan pas doorgaan als de specificatie volwassen is.
  2. Veel bruikbare protocollen zijn een uitbreiding van gepubliceerde protocollen. Als fuzz-testen zijn gebaseerd op gepubliceerde specificaties, Test dekking voor nieuwe protocollen zal beperkt zijn.

De eenvoudigste vorm van fuzzing-techniek is het verzenden van willekeurige invoer naar de software als protocolpakketten of als een gebeurtenis. Deze techniek van het doorgeven van willekeurige invoer is zeer krachtig om bugs in veel toepassingen en services te vinden. Andere technieken zijn ook beschikbaar, en het is zeer eenvoudig te implementeren. Om deze technieken te implementeren, hoeven we alleen de bestaande invoer te wijzigen. We kunnen de invoer veranderen door de invoerbits uit te wisselen.

Soorten bugs gedetecteerd door Fuzz Testing

  • Bevestigingsfouten en geheugenlekken deze methode wordt veel gebruikt voor grote toepassingen waar bugs de veiligheid van het geheugen aantasten, wat een ernstige kwetsbaarheid is.

  • Ongeldige invoer

    Bij fuzz-testen worden fuzzers gebruikt om een ​​ongeldige invoer te genereren die wordt gebruikt voor het testen van foutafhandelingsroutines, en dit is belangrijk voor de software die de invoer niet controleert. Eenvoudig fuzzen kan bekend staan ​​als een manier om negatieve testen te automatiseren.

  • Correctheidsfouten

    Fuzzing kan ook worden gebruikt om bepaalde typen 'correctheid'-bugs te detecteren. Zoals een beschadigde database, slechte zoekresultaten, enz.

    Fuzz-testtools

    Tools die worden gebruikt in webbeveiliging kunnen op grote schaal worden gebruikt bij fuzz-testen, zoals Burp Suite, Peach Fuzzer, enz.

  • Perzik Fuzzer

    Peach Fuzzer biedt een robuustere en veiligere dekking dan een scanner. Andere testtools kunnen alleen naar bekende threads zoeken, terwijl Peach Fuzzer gebruikers in staat stelt bekende en onbekende threads te vinden.

  • Spike-proxy

    Het is een professionele tool die op zoek is naar kwetsbaarheden op applicatieniveau in webapplicaties. SPIKE Proxy behandelt de basis, zoals SQL-injectie en cross-site-scripting, maar het is volledig open Python infrastructuur. SPIKE Proxy is beschikbaar voor Linux en Windows.

  • Webscarabe

    Webscarab is geschreven in Java en is dus overdraagbaar naar veel platforms. Voor het analyseren van applicaties wordt een Webscarab-framework gebruikt dat communiceert via HTTP- en HTTPS-protocollen.

    Vroegere: Webscarab werkt als een onderscheppende proxy, het stelt de operator in staat om verzoeken die door de browser zijn gemaakt, te bekijken en te wijzigen voordat ze door de server worden ontvangen. En laat toe om de door de server gegenereerde respons te bekijken en bij te werken voordat deze door de browser wordt ontvangen. Op deze manier, als web scarabee een maas in de wet vindt, zal het de lijst met gemelde problemen maken.

  • OWASP WSFuzzer

    WSFuzzer is een GPL-programma dat is geschreven in Python. GPL'd een programma dat momenteel gericht is op Web Services. In de huidige versie van OWASPWSFuzzer zijn op HTTP gebaseerde SOAP-services het belangrijkste doelwit.

Voordelen van Fuzz-testen

  • Fuzz-testen verbeteren software Beveiligingstests .
  • Bugs die bij fuzzing worden gevonden, zijn soms ernstig en worden meestal door hackers gebruikt, waaronder crashes, geheugenlekken, onverwerkte uitzonderingen, enz.
  • Als een van de bugs niet wordt opgemerkt door de testers vanwege de beperking van tijd en middelen, worden deze bugs ook gevonden in Fuzz-tests.

Nadelen van Fuzz-testen

  • Fuzz-testen alleen kunnen geen volledig beeld geven van een algemene beveiligingsdreiging of bugs.
  • Fuzz-testen zijn minder effectief voor het omgaan met beveiligingsbedreigingen die geen programmacrashes veroorzaken, zoals sommige virussen, wormen, Trojaanse paarden, enz.
  • Fuzz-tests kunnen alleen eenvoudige fouten of bedreigingen detecteren.
  • Om effectief te presteren, zal het veel tijd vergen.
  • Het instellen van een randwaardevoorwaarde met willekeurige invoer is zeer problematisch, maar nu het gebruik van deterministische algoritmen op basis van gebruikersinvoer, lossen de meeste testers dit probleem op.

Samenvatting:

In Software Engineering toont Fuzz-testen de aanwezigheid van bugs in een applicatie aan. Fuzzing kan de volledige detectie van bugs in een applicatie niet garanderen. Maar door de Fuzz-techniek te gebruiken, zorgt het ervoor dat de applicatie robuust en veilig is, omdat deze techniek helpt om de meeste veelvoorkomende kwetsbaarheden bloot te leggen.

Dit artikel is een bijdrage van Priyanka Kothe