Skip to main content

Τι είναι η δοκιμή fuzz;

Δοκιμές fuzz, ή fuzzing, είναι μια μέθοδος ελέγχου για να δούμε πώς ένα πρόγραμμα ή ένα σύστημα ή το σύστημα θα ανταποκριθεί σε διάφορες, μερικές φορές τυχαίες εισροές και πληροφορίες.Η διαδικασία περιλαμβάνει τη δημιουργία κάποιου τύπου δεδομένων, είτε εντελώς τυχαία είτε τυχαία μέσα σε ορισμένους περιορισμούς, και στη συνέχεια τη διατροφή αυτών των δεδομένων στο πρόγραμμα για να ελέγξει τον τρόπο με τον οποίο χειρίζεται απροσδόκητες πληροφορίες.Η πιο βασική μορφή δοκιμών fuzz περιλαμβάνει την αποστολή μιας τυχαίας ακολουθίας πλήκτρων ή χαρακτήρων στο πρόγραμμα και τον έλεγχο που τις επεξεργάζεται σωστά.Μια πιο περίπλοκη εκδοχή της δοκιμής fuzz χρησιμοποιεί δομημένα δεδομένα που στη συνέχεια χειρίζονται τυχαία και αποστέλλονται στο πρόγραμμα.Τα δεδομένα μπορούν να φτάσουν στο πρόγραμμα ως συμβάντα συστήματος, εισόδους πληκτρολογίου, ψεύτικα σήματα δικτύου ή ακόμα και ως αρχεία που πρόκειται να φορτωθούν.Η γραφική διεπαφή χρήστη (GUI) μπορεί να δοκιμαστεί δημιουργώντας μια ακολουθία τυχαίων συμβάντων ποντικού και πληκτρολογίου και ελέγχοντας ότι το GUI είναι σε θέση να χειριστεί την είσοδο χωρίς να συντρίβει, να παγώνει ή να εκτελεί μια απροσδόκητη εργασία.Τα πρωτόκολλα δικτύου μπορούν να δοκιμαστούν επιτρέποντας στη γεννήτρια fuzz να αλλάζει τυχαία τμήματα ενός έγκυρου πακέτου δεδομένων και στη συνέχεια να διασφαλίσει ότι το πρωτόκολλο μπορεί να συνεχίσει να λειτουργεί μετά τη λήψη δυσμορφωμένων δεδομένων.Τα βασικά στοιχεία εισόδου σχεδόν οποιουδήποτε προγράμματος μπορούν να ελεγχθούν για την ικανότητά τους να αντιστέκονται σε σφάλματα, όπως η είσοδος που είναι πολύ μεγάλη για τον τύπο αποθήκευσης, την είσοδο που είναι διαφορετικού τύπου από την αναμενόμενη και την είσοδο που είναι κάπως ελλιπής ή λανθασμένη.

Η βιομηχανία ασφάλειας υπολογιστών μπορεί να χρησιμοποιήσει δοκιμές fuzz για να διασφαλίσει ότι δεν υπάρχουν προφανείς τρύπες ασφαλείας σε ορισμένα συστήματα.Αυτό μπορεί να γίνει χρησιμοποιώντας μια γεννήτρια fuzz σχεδιασμένη για τη δοκιμή της ασφάλειας του υπολογιστή.Αυτά τα προγράμματα θα προσπαθήσουν να χρησιμοποιήσουν λέξεις -κλειδιά συστήματος, γνωστούς προεπιλεγμένους κωδικούς πρόσβασης διαχειριστή, λειτουργίες εντός των βιβλιοθηκών που χρησιμοποιεί το πρόγραμμα και τυχαίες κλήσεις στις λειτουργίες του συστήματος για να δούμε πώς θα αντιδράσει το πρόγραμμα.Ορισμένες σειρές ή ακόμα και να δοκιμάσουν μόνο συγκεκριμένους τύπους εισροών.Αυτό σημαίνει ότι ένα πρόγραμμα θα μπορούσε να έχει μόνο έγκυρες εντολές που αποστέλλονται σε αυτό, αλλά θα μπορούσαν να είναι σε μια ανόητη σειρά.Υπάρχουν πιο πολύπλοκα προγράμματα δοκιμών fuzz που μπορούν να λάβουν στοιχεία του προγράμματος -στόχου και να τα χειριστούν για να παράγουν καταστάσεις που θα μπορούσαν να αξιοποιηθούν κακόβουλα.Αυτό μπορεί να περιλαμβάνει την αλλαγή της σειράς διαδικασιών που δημιουργούνται, τροποποιήσεις των δικαιωμάτων ή τροποποίηση των αρχείων βασικών δεδομένων και βιβλιοθήκης.

Το τελικό αποτέλεσμα της δοκιμής fuzz είναι να διαπιστωθεί εάν ένα πρόγραμμα είναι ασφαλές και συμπεριφέρεται όπως θα έπρεπε όταν αντιμετωπίζει ένααπροσδόκητη κατάσταση.Όταν χρησιμοποιείται σε συνδυασμό με λογισμικό προφίλ και ανάλυσης, μπορεί επίσης να ανιχνεύσει διαρροές μνήμης σε περιοχές του προγράμματος, όπως χειρισμός σφαλμάτων ή συμφόρηση απόδοσης.Σε περιπτώσεις ασφάλειας υπολογιστών, επικίνδυνα προβλήματα όπως υπερχείλιση που μπορούν να θέσουν σε κίνδυνο ένα σύστημα μπορεί να αλιευθεί με τη σωστή ρύθμιση.Ωστόσο, οι δοκιμές fuzz δεν μπορούν να χρησιμοποιηθούν ως μοναδική μέθοδος δοκιμής λογισμικού και πρέπει να αποτελούν μέρος μιας μεγαλύτερης διαδικασίας διασφάλισης ποιότητας και επιθεώρησης λογισμικού.