Δοκιμή Fuzz
Το Fuzz Testing ή το Fuzzing είναι μια τεχνική δοκιμής λογισμικού για την τοποθέτηση μη έγκυρων ή τυχαίων δεδομένων που ονομάζονται FUZZ στο σύστημα λογισμικού για να ανακαλύψετε σφάλματα κωδικοποίησης και κενά ασφαλείας. Ο σκοπός της δοκιμής fuzz είναι η εισαγωγή δεδομένων χρησιμοποιώντας αυτοματοποιημένες ή ημι-αυτοματοποιημένες τεχνικές και δοκιμή του συστήματος για διάφορες εξαιρέσεις, όπως σφάλμα συστήματος ή αστοχία ενσωματωμένου κώδικα κ.λπ.
Οι δοκιμές Fuzz αναπτύχθηκαν αρχικά από τον Barton Miller στο Πανεπιστήμιο του Ουισκόνσιν το 1989. Οι δοκιμές Fuzz ή fuzzing είναι μια τεχνική δοκιμών λογισμικού και είναι ένας τύπος δοκιμών ασφαλείας .
Γιατί να κάνετε δοκιμή Fuzz;
- Συνήθως, οι δοκιμές ασαφούς εντοπίζουν το πιο σοβαρό σφάλμα ή ελάττωμα ασφαλείας.
- Η δοκιμή Fuzz δίνει πιο αποτελεσματικό αποτέλεσμα όταν χρησιμοποιείται με Black Box Testing, Beta Testing και άλλες μεθόδους εντοπισμού σφαλμάτων.
- Η δοκιμή Fuzz χρησιμοποιείται για τον έλεγχο της ευπάθειας του λογισμικού. Είναι πολύ αποδοτικές τεχνικές δοκιμών.
- Η δοκιμή Fuzz είναι μια από τις τεχνικές δοκιμών μαύρου κουτιού Το Fuzzing είναι μια από τις πιο κοινές μεθόδους που χρησιμοποιούν οι χάκερ για να βρουν την ευπάθεια του συστήματος.
Πώς να κάνετε δοκιμή Fuzz
Τα βήματα για ασαφή δοκιμή περιλαμβάνουν τα βασικά στάδια δοκιμών-
Βήμα 1) Προσδιορίστε το σύστημα προορισμού
Βήμα 2) Προσδιορίστε τις εισόδους
Βήμα 3) Δημιουργία ασαφών δεδομένων
Βήμα 4) Εκτελέστε τη δοκιμή χρησιμοποιώντας ασαφή δεδομένα
Βήμα 5) Παρακολούθηση της συμπεριφοράς του συστήματος
Βήμα 6) Ελαττώματα καταγραφής
Παραδείγματα Fuzzers
-
Τα Fuzzers με βάση τη μετάλλαξη αλλάζουν τα υπάρχοντα δείγματα δεδομένων για να δημιουργήσουν νέα δεδομένα δοκιμών. Αυτή είναι η πολύ απλή και απλή προσέγγιση, ξεκινά με έγκυρα δείγματα πρωτοκόλλου και συνεχίζει να διαχειρίζεται κάθε byte ή αρχείο.
-
Οι γεννήτριες βάσει γενεών ορίζουν νέα δεδομένα με βάση την είσοδο του μοντέλου. Αρχίζει να δημιουργεί είσοδο από το μηδέν με βάση τις προδιαγραφές.
-
PROTOCOL-BASED-fuzzer , το πιο επιτυχημένο fuzzer είναι να έχει λεπτομερή γνώση της δοκιμαστικής μορφής πρωτοκόλλου. Η κατανόηση εξαρτάται από τις προδιαγραφές. Περιλαμβάνει τη σύνταξη μιας σειράς των προδιαγραφών στο εργαλείο και στη συνέχεια με τη χρήση τεχνικής δημιουργίας δοκιμών βάσει μοντέλου, περάστε από την προδιαγραφή και προσθέστε παρατυπία στα περιεχόμενα των δεδομένων, την ακολουθία κ.λπ. Αυτό είναι επίσης γνωστό ως δοκιμή σύνταξης, δοκιμή γραμματικής, δοκιμή αντοχής, κ.λπ. Το Fuzzer μπορεί να δημιουργήσει δοκιμαστικές περιπτώσεις από μια υπάρχουσα ή μπορεί να χρησιμοποιεί έγκυρες ή μη έγκυρες εισόδους.
Υπάρχουν δύο περιορισμοί του fuzzing με βάση το πρωτόκολλο:
- Η δοκιμή δεν μπορεί να προχωρήσει έως ότου ωριμάσει η προδιαγραφή.
- Πολλά χρήσιμα πρωτόκολλα αποτελούν επέκταση δημοσιευμένων πρωτοκόλλων. Εάν η δοκιμή fuzz βασίζεται σε δημοσιευμένες προδιαγραφές, η κάλυψη δοκιμών για νέα πρωτόκολλα θα είναι περιορισμένη.
Η απλούστερη μορφή τεχνικής fuzzing είναι η αποστολή τυχαίας εισόδου στο λογισμικό είτε ως πακέτα πρωτοκόλλων είτε ως συμβάν. Αυτή η τεχνική μετάδοσης τυχαίας εισόδου είναι πολύ ισχυρή για την εύρεση σφαλμάτων σε πολλές εφαρμογές και υπηρεσίες. Άλλες τεχνικές είναι επίσης διαθέσιμες και είναι πολύ εύκολο να εφαρμοστούν. Για να εφαρμόσουμε αυτές τις τεχνικές, απλά πρέπει να αλλάξουμε τις υπάρχουσες εισόδους. Μπορούμε να αλλάξουμε την είσοδο απλά αλλάζοντας τα κομμάτια εισόδου.
Τύποι σφαλμάτων που εντοπίστηκαν από το Fuzz Testing
-
Αποτυχίες διεκδίκησης και διαρροές μνήμης αυτή η μεθοδολογία χρησιμοποιείται ευρέως για μεγάλες εφαρμογές, όπου σφάλματα επηρεάζουν την ασφάλεια της μνήμης, η οποία είναι σοβαρή ευπάθεια.
- Μη έγκυρη εισαγωγή
Στη δοκιμή fuzz, τα fuzzers χρησιμοποιούνται για τη δημιουργία μη έγκυρης εισόδου που χρησιμοποιείται για τον έλεγχο ρουτίνας χειρισμού σφαλμάτων και αυτό είναι σημαντικό για το λογισμικό που δεν ελέγχει την είσοδο του. Το απλό fuzzing μπορεί να είναι γνωστό ως τρόπος αυτοματοποίησης αρνητικών δοκιμών.
- Σφάλματα ορθότητας
Το Fuzzing μπορεί επίσης να χρησιμοποιηθεί για την ανίχνευση ορισμένων τύπων σφαλμάτων "ορθότητας". Όπως κατεστραμμένη βάση δεδομένων, κακά αποτελέσματα αναζήτησης κ.λπ.
Εργαλεία δοκιμών Fuzz
Εργαλεία που χρησιμοποιούνται στην ασφάλεια ιστού μπορούν να χρησιμοποιηθούν ευρέως σε δοκιμές fuzz όπως Burp Suite, Peach Fuzzer κ.λπ.
- Ροδάκινο Fuzzer
Το Peach Fuzzer παρέχει πιο ισχυρή και ασφαλή κάλυψη από έναν σαρωτή. Άλλα εργαλεία δοκιμών μπορούν να αναζητήσουν μόνο γνωστά νήματα, ενώ το Peach Fuzzer επιτρέπει στους χρήστες να βρίσκουν γνωστά και άγνωστα νήματα.
- Πληρεξούσιος Spike
Είναι ένα εργαλείο επαγγελματικού επιπέδου που αναζητά ευπάθειες σε επίπεδο εφαρμογών σε εφαρμογές ιστού. Το SPIKE Proxy καλύπτει τα βασικά, όπως SQL Injection και cross-site-scripting, αλλά είναι εντελώς ανοιχτή υποδομή Python. Το SPIKE Proxy είναι διαθέσιμο για Linux και Windows.
- Webcarcarab
Το Webscarab είναι γραμμένο σε Java, επομένως φορητό σε πολλές πλατφόρμες. Για την ανάλυση της εφαρμογής χρησιμοποιείται το πλαίσιο Webscarab που επικοινωνούν χρησιμοποιώντας πρωτόκολλα HTTP και HTTPS.
Π.χ .: Το Webscarab λειτουργεί ως διακομιστής μεσολάβησης, επιτρέπει στον χειριστή να ελέγχει και να τροποποιεί το αίτημα που έχει δημιουργηθεί από το πρόγραμμα περιήγησης προτού ληφθεί από τον διακομιστή. Και επιτρέψτε να ελέγξετε και να ενημερώσετε την απόκριση που δημιουργήθηκε από τον διακομιστή προτού ληφθεί από το πρόγραμμα περιήγησης. Με αυτόν τον τρόπο, εάν το web scarab εντοπίσει κάποιο κενό, θα κάνει τη λίστα με τα αναφερόμενα ζητήματα.
- OWASP WSFuzzer
Το WSFuzzer είναι ένα πρόγραμμα GPL που γράφτηκε στο Python. Το πρόγραμμα GPL θα στοχεύει επί του παρόντος υπηρεσίες Web. Στην τρέχουσα έκδοση του OWASPWSFuzzer HTTP με βάση τις υπηρεσίες SOAP είναι ο κύριος στόχος.
Πλεονεκτήματα της δοκιμής Fuzz
- Η δοκιμή Fuzz βελτιώνει τον έλεγχο ασφάλειας λογισμικού.
- Τα σφάλματα που εντοπίστηκαν στο fuzzing είναι μερικές φορές σοβαρά και τις περισσότερες φορές χρησιμοποιούνται από χάκερ, όπως σφάλματα, διαρροή μνήμης, εξαίρεση χωρίς χειρισμό κ.λπ.
- Εάν κάποιο από τα σφάλματα δεν μπορεί να παρατηρηθεί από τους υπεύθυνους δοκιμών λόγω του περιορισμού του χρόνου και των πόρων, αυτά τα σφάλματα βρίσκονται επίσης στη δοκιμή Fuzz.
Μειονεκτήματα της δοκιμής Fuzz
- Οι δοκιμές Fuzz από μόνες τους δεν μπορούν να παρέχουν μια πλήρη εικόνα μιας συνολικής απειλής ή σφαλμάτων ασφαλείας.
- Η δοκιμή Fuzz είναι λιγότερο αποτελεσματική για την αντιμετώπιση απειλών ασφαλείας που δεν προκαλούν σφάλματα προγράμματος, όπως ορισμένοι ιοί, worms, Trojan κ.λπ.
- Η δοκιμή Fuzz μπορεί να εντοπίσει μόνο απλά σφάλματα ή απειλές.
- Για να λειτουργήσει αποτελεσματικά, θα χρειαστεί σημαντικός χρόνος.
- Ο καθορισμός μιας συνθήκης οριακής τιμής με τυχαίες εισόδους είναι πολύ προβληματικός, αλλά τώρα χρησιμοποιώντας ντετερμινιστικούς αλγόριθμους με βάση τις εισόδους των χρηστών οι περισσότεροι από τους δοκιμαστές επιλύουν αυτό το πρόβλημα.
Περίληψη:
Στο Software Engineering, το Fuzz testing δείχνει την παρουσία σφαλμάτων σε μια εφαρμογή. Το Fuzzing δεν μπορεί να εγγυηθεί τον εντοπισμό σφαλμάτων εντελώς σε μια εφαρμογή. Αλλά με τη χρήση της τεχνικής Fuzz, διασφαλίζει ότι η εφαρμογή είναι ανθεκτική και ασφαλής, καθώς αυτή η τεχνική βοηθά στην έκθεση των περισσότερων κοινών ευπαθειών.
Αυτό το άρθρο συνεισφέρει η Priyanka Kothe