Fuzz-testen
Fuzz Testing of Fuzzing is een softwaretesttechniek waarbij ongeldige of willekeurige gegevens, FUZZ genaamd, in het softwaresysteem worden geplaatst om coderingsfouten en beveiligingslekken 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 het falen van ingebouwde code, enz.
Fuzz-testen zijn oorspronkelijk ontwikkeld door Barton Miller aan de Universiteit van Wisconsin in 1989. Fuzz-testen of fuzzing is een softwaretesttechniek, en het is een soort beveiligingstest .
Waarom Fuzz-testen doen?
- Gewoonlijk vindt Fuzzy-testen de ernstigste beveiligingsfout of -defect.
- Fuzz-testen geven een effectiever resultaat bij gebruik met Black Box Testing, Beta Testing en andere methoden voor foutopsporing.
- 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-tests te doen
De stappen voor fuzzy-testen omvatten de basisteststappen:
Stap 1) Identificeer het doelsysteem
Stap 2) Identificeer ingangen
Stap 3) Genereer vervaagde gegevens
Stap 4) Voer de test uit met fuzzy data
Stap 5) Bewaak het systeemgedrag
Stap 6) Log gebreken
Voorbeelden van Fuzzers
-
Mutation-Based Fuzzers veranderen bestaande datamonsters om nieuwe testdata te creëren. Dit is de zeer eenvoudige en ongecompliceerde aanpak, dit begint met geldige voorbeelden van protocol en blijft elke byte of bestand verminken.
-
Generation-Based Fuzzers definiëren nieuwe data op basis van de input van het model. Het begint vanaf het begin invoer te genereren op basis van de specificatie.
-
PROTOCOL-GEBASEERDE-fuzzer , de meest succesvolle fuzzer is om gedetailleerde kennis te hebben van het protocolformaat dat wordt getest. Het begrip hangt af van de specificatie. Het omvat het schrijven van een reeks van de specificatie in de tool en vervolgens met behulp van een modelgebaseerde testgeneratietechniek de specificatie doorlopen en onregelmatigheden toevoegen in de gegevensinhoud, volgorde, enz. Dit wordt ook wel syntaxis testen, grammatica testen, robuustheid testen, etc. Fuzzer kan testgevallen genereren op basis van een bestaande, of ze kunnen geldige of ongeldige invoer gebruiken.
Er zijn twee beperkingen van op protocol gebaseerde fuzzing:
- Het testen kan pas doorgaan als de specificatie volwassen is.
- Veel nuttige protocollen zijn een uitbreiding van gepubliceerde protocollen. Als fuzz-tests zijn gebaseerd op gepubliceerde specificaties, is de testdekking voor nieuwe protocollen beperkt.
De eenvoudigste vorm van fuzzing-techniek is het verzenden van willekeurige invoer naar de software als protocolpakketten of als 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 heel gemakkelijk te implementeren. Om deze technieken te implementeren, hoeven we alleen de bestaande inputs te wijzigen. We kunnen de invoer wijzigen door de bits van invoer te verwisselen.
Typen bugs die zijn gedetecteerd door Fuzz Testing
-
Assertion-fouten en geheugenlekken Deze methodologie 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 beheert. Simpele fuzzing staat bekend als een manier om negatieve tests te automatiseren.
- Correctheid bugs
Fuzzing kan ook worden gebruikt om sommige soorten "correctheids" -bugs te detecteren. Zoals een beschadigde database, slechte zoekresultaten, etc.
Fuzz-testtools
Tools die worden gebruikt bij webbeveiliging kunnen op grote schaal worden gebruikt bij fuzz-testen zoals Burp Suite, Peach Fuzzer, enz.
- Perzik Fuzzer
Peach Fuzzer biedt meer robuuste en beveiligingsdekking dan een scanner. Andere testtools kunnen alleen naar bekende threads zoeken, terwijl Peach Fuzzer gebruikers in staat stelt om bekende en onbekende threads te vinden.
- Spike-proxy
Het is een professionele tool die zoekt naar kwetsbaarheden op applicatieniveau in webapplicaties. SPIKE Proxy behandelt de basisprincipes, zoals SQL-injectie en cross-site-scripting, maar het is een volledig open Python-infrastructuur. SPIKE Proxy is beschikbaar voor Linux en Windows.
- Webscarab
Webscarab is in Java geschreven en is dus overdraagbaar naar veel platforms. Voor het analyseren van applicaties wordt een Webscarab-framework gebruikt die communiceren via HTTP- en HTTPS-protocollen.
Voorbeeld: Webscarab werkt als een onderscheppende proxy, het stelt de operator in staat om door de browser aangemaakte verzoeken te bekijken en te wijzigen voordat ze door de server worden ontvangen. En sta toe om de reactie die door de server is gegenereerd te bekijken en bij te werken voordat deze door de browser is ontvangen. Op deze manier, als de web-scarabee een maas in de wet vindt, wordt de lijst met de gemelde problemen gemaakt.
- OWASP WSFuzzer
WSFuzzer is een GPL-programma dat is geschreven in Python. Een GPL-programma is momenteel gericht op webservices. In de huidige versie van OWASPWSFuzzer zijn op HTTP gebaseerde SOAP-services het belangrijkste doelwit.
Voordelen van Fuzz-testen
- Fuzz-tests verbeteren softwarebeveiligingstests.
- Bugs gevonden in fuzzing zijn soms ernstig en worden meestal gebruikt door hackers, 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 die bugs ook aangetroffen in Fuzz-tests.
Nadelen van Fuzz-testen
- Fuzz-tests alleen kunnen geen volledig beeld geven van een algemene beveiligingsdreiging of bugs.
- Fuzz-testen zijn minder effectief voor het omgaan met beveiligingsbedreigingen die geen programma-crashes 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 kosten.
- Het instellen van een randwaardeconditie met willekeurige invoer is erg problematisch, maar nu met behulp van deterministische algoritmen op basis van gebruikersinvoer, lossen de meeste testers dit probleem op.
Overzicht:
In Software Engineering toont Fuzz-testen de aanwezigheid van bugs in een applicatie. Fuzzing kan de detectie van bugs in een applicatie niet volledig garanderen. Maar door de Fuzz-techniek te gebruiken, zorgt het ervoor dat de applicatie robuust en veilig is, aangezien deze techniek helpt om de meeste veelvoorkomende kwetsbaarheden bloot te leggen.
Dit artikel is bijgedragen door Priyanka Kothe