Οι ευπάθειες λογισμικού είναι ένα σημαντικό πρόβλημα στην ασφάλεια στον κυβερνοχώρο. Επιτρέπουν σε προϊόντα λογισμικού να δέχονται επίθεση και όταν αυτά τα προϊόντα συνδέονται με κατά τα άλλα ασφαλή δίκτυα, μπορούν να παρέχουν ένα σημείο εισόδου για τους χάκερ.

Όλα τα επαγγελματικά προϊόντα λογισμικού ελέγχονται διεξοδικά πριν από την κυκλοφορία. Δυστυχώς, οι ευπάθειες εξακολουθούν να είναι συχνό φαινόμενο. Ένας τρόπος για να βρείτε πρόσθετα τρωτά σημεία είναι να χρησιμοποιήσετε μια τεχνική δοκιμής λογισμικού γνωστή ως fuzzing.

Τι είναι λοιπόν το fuzzing και πώς λειτουργεί;

Τι είναι το Fuzzing;

Το Fuzzing είναι μια αυτοματοποιημένη τεχνική δοκιμής λογισμικού που προσπαθεί να βρει τρωτά σημεία χρησιμοποιώντας τυχαίες εισόδους.

Το λογισμικό συχνά συμπεριφέρεται απρόβλεπτα όταν ο χρήστης εισάγει μια είσοδο διαφορετική από αυτή που ζητήθηκε. Το Fuzzing είναι η πρακτική εισαγωγής μεγάλων ποσοτήτων απροσδόκητων εισροών και καταγραφής του τι συμβαίνει. Η ιδέα είναι ότι ο χρήστης μπορεί στη συνέχεια να παρακολουθεί το λογισμικό και να προσδιορίζει εάν υπάρχουν ευπάθειες ή όχι.

instagram viewer

Το Fuzzing χρησιμοποιείται για τη δοκιμή προϊόντων λογισμικού και από επαγγελματίες ασφαλείας για να προσδιοριστεί εάν ένα δίκτυο είναι ασφαλές. Χρησιμοποιείται επίσης από χάκερ που εξασκούνται στο fuzzing για να βρουν τρωτά σημεία που μπορούν να χρησιμοποιήσουν οι ίδιοι.

Τα τρωτά σημεία που ανακαλύπτονται από το fuzzing ποικίλλουν ευρέως. Μια απροσδόκητη είσοδος μπορεί να προκαλέσει απλώς τη διακοπή λειτουργίας του λογισμικού. Αλλά μπορεί επίσης να επιστρέψει προσωπικές πληροφορίες ή να επιτρέψει στον χρήστη να έχει πρόσβαση σε μέρη του λογισμικού που διαφορετικά θα ήταν εκτός ορίων.

Ποια είναι τα πλεονεκτήματα του Fuzzing;

Το Fuzzing είναι μόνο ένας από τους πολλούς τρόπους με τους οποίους τα προϊόντα λογισμικού μπορούν να ελεγχθούν για τρωτά σημεία. Είναι δημοφιλές γιατί:

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

Πώς λειτουργεί το Fuzzing;

Ένα εργαλείο που χρησιμοποιείται για το fuzzing έχει συνήθως τρία στοιχεία. Συχνά αναφέρονται ως ποιητής, αγγελιαφόρος και χρησμός.

Ο ποιητής

Ο ποιητής ξεκινά τη διαδικασία και είναι υπεύθυνος για τη δημιουργία μιας δοκιμαστικής υπόθεσης. Μια δοκιμαστική περίπτωση είναι μια μακρά λίστα πιθανών εισροών.

Ο Ταχυμεταφορέας

Ο ταχυμεταφορέας εισάγει όλες τις τυχαίες εισροές στο στοχευμένο λογισμικό. Τα Fuzzers έχουν σχεδιαστεί για να το κάνουν αυτό αυτόματα, επιτρέποντας τη μαζική δοκιμή μεγάλων ποσοτήτων εισόδων.

Το Μαντείο

Το μαντείο ελέγχει εάν κάποια από τις εισόδους κάνει το λογισμικό να κάνει κάτι διαφορετικό από αυτό που είχε σχεδιαστεί για να κάνει. Εάν το fuzzing πραγματοποιείται για νόμιμους σκοπούς, η συμπεριφορά μπορεί στη συνέχεια να αναπαραχθεί και να διορθωθεί. Ή εάν το fuzzing πραγματοποιείται από έναν χάκερ και η απροσδόκητη συμπεριφορά είναι χρήσιμη, μπορεί να χρησιμοποιηθεί για κακόβουλους σκοπούς.

Πώς χρησιμοποιούν οι επιτιθέμενοι το Fuzzing;

Το Fuzzing είναι μια δημοφιλής τεχνική μεταξύ των χάκερ, επειδή τους επιτρέπει να βρίσκουν τρωτά σημεία σε λογισμικό χωρίς πρόσβαση στον πηγαίο κώδικα. Επειδή το fuzzing είναι αυτοματοποιημένο, είναι επίσης εύκολο να εκτελεστεί. Εάν ένας χάκερ ανακαλύψει μια ευπάθεια, μπορεί να είναι σε θέση να εκτελέσει τις ακόλουθες επιθέσεις.

Επιθέσεις DDoS

Εάν το fuzzing ανακαλύψει ότι ορισμένες εισροές απαιτούν πολύ χρόνο για να επεξεργαστούν, αυτές οι πληροφορίες μπορούν να χρησιμοποιηθούν για την εκτόξευση μιας επίθεσης DDoS. Μια επίθεση DDoS περιλαμβάνει την αποστολή τόσων πολλών αιτημάτων σε ένα σύστημα που σταματά να λειτουργεί. Το Fuzzing επιτρέπει στα αιτήματα να προσαρμόζονται έτσι ώστε να απαιτούν τους περισσότερους πόρους του συστήματος για να ανταποκριθούν.

SQL Injection

Μια επίθεση SQL injection είναι όταν αποστέλλονται κακόβουλες δηλώσεις SQL σε μια εφαρμογή. Εάν αυτές οι δηλώσεις δεν απολυμανθούν σωστά, μπορούν να επιτρέψουν σε έναν εισβολέα να αλληλεπιδράσει με τη βάση δεδομένων. Αυτό μπορεί να τους επιτρέψει να κλέψουν δεδομένα ή να τα τροποποιήσουν. Το Fuzzing είναι ένα αποτελεσματικό εργαλείο για την απόπειρα μεγάλων ποσοτήτων εντολών SQL και για τον προσδιορισμό εάν υπάρχουν μια ευνοϊκή απόκριση.

Υπερχείλιση buffer

Επίθεση υπερχείλισης buffer είναι όταν προστίθενται περισσότερα δεδομένα στο buffer ενός προγράμματος από όσα μπορεί να χειριστεί. Σε αυτό το σενάριο, είναι δυνατό για έναν χάκερ να αναγκάσει αυτό το πρόγραμμα να εκτελέσει κακόβουλο κώδικα. Αυτό μπορεί να χρησιμοποιηθεί για την κλοπή δεδομένων ή για την απόκτηση μη εξουσιοδοτημένης πρόσβασης. Το Fuzzing χρησιμοποιείται για την εύρεση εισόδων που μπορεί να προκαλέσουν υπερχείλιση buffer.

Τύποι Fuzzing

Τα εργαλεία Fuzzing μπορούν να ταξινομηθούν με βάση τόσο τον τρόπο δημιουργίας των δοκιμαστικών περιπτώσεων όσο και με το πόσα είναι γνωστά για το σύστημα.

Χαζός εναντίον Εξυπνος

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

Το έξυπνο fuzzing δημιουργεί εισόδους που είναι πιθανό να αποδεχτεί η εφαρμογή. Απαιτεί να κατανοήσει ο χρήστης ποια μορφή εισόδου είναι αποδεκτή και στη συνέχεια να δημιουργήσει μεγάλες ποσότητες εισόδων εντός αυτής της μορφής. Το έξυπνο fuzzing απαιτεί περισσότερη προσπάθεια και γνώσεις προϊόντος για να εφαρμοστεί, αλλά είναι σημαντικά πιο αποτελεσματικό.

Μεταλλαγές vs. Γενεαλογικό

Τα μεταλλαγμένα fuzzer λαμβάνουν μια είσοδο που ήταν προηγουμένως αποδεκτή και κάνουν μικρές αλλαγές σε αυτήν. Αυτό επιτρέπει τη δημιουργία εισροών που είναι πιθανό να γίνουν αποδεκτές χωρίς γνώση της αποδεκτής μορφής.

Οι fuzzers γενιάς δημιουργούν εντελώς νέες εισόδους με βάση όσα είναι γνωστά για την αποδεκτή μορφή.

White Box vs. Μαύρο κουτί

Το fuzzing μαύρου κουτιού χρησιμοποιείται χωρίς καμία πληροφορία σχετικά με την εφαρμογή που ελέγχεται. Είναι λιγότερο αποτελεσματικό από το white box fuzzing, αλλά μπορεί να εφαρμοστεί σε οποιαδήποτε εφαρμογή χωρίς πρόσβαση στον πηγαίο κώδικα. Αυτό το κάνει δημοφιλές μεταξύ των χάκερ.

Το White box Fuzzing χρησιμοποιεί πληροφορίες σχετικά με την εφαρμογή που δοκιμάζεται για να δημιουργήσει εισόδους που είναι πιο πιθανό να γίνουν αποδεκτές και να δημιουργήσουν τρωτά σημεία. Χρησιμοποιείται κυρίως από προγραμματιστές λογισμικού επειδή είναι πιο αποτελεσματικό από το fuzzing μαύρου κουτιού.

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

Είναι ιδιαίτερα σημαντικό από άποψη ασφάλειας, επειδή χρησιμοποιείται συχνά για την ανακάλυψη τρωτών σημείων zero-day. Αυτά τα τρωτά σημεία μπορούν είτε να ανακαλυφθούν και να διορθωθούν από επαγγελματίες ασφαλείας είτε να ανακαλυφθούν και να εκμεταλλευτούν οι χάκερ.