Το προφίλ μας στο Google Plus
5

Data που χορεύουν ή αλλιώς εισαγωγή στο fuzzing

Υποθέστε ότι έχουμε μια πληθώρα δεδομένων που μεταβάλλονται ακατάπαυστα και με μεγάλο ρυθμό. Φανταστείτε κάτι σαν το διάσημο εφέ από το Matrix, με τους χαρακτήρες που πέφτουν και ταυτόχρονα μεταβάλλονται. Αναρωτιέστε σε τι θα μπορούσε να μας φανεί χρήσιμος ένας τέτοιος συρφετός δεδομένων; Εκτός από την κατασκευή ενός screen saver α λα Matrix, θα μπορούσαμε να τσεκάρουμε τις αντοχές των προγραμμάτων μας και να εντοπίσουμε πιθανές ευπάθειες.

Data που χορεύουν ή αλλιώς εισαγωγή στο fuzzing

Το 1946 ένας μικροσκοπικός σκόρος, παγιδευμένος σε κάποιο ρελέ του ηλεκτρομηχανικού υπολογιστή Mark II, καταφέρνει να θέσει το μηχάνημα εκτός λειτουργίας. Τότε χρησιμοποιήθηκε για πρώτη φορά ο όρος bug, που πολύ σύντομα μετατράπηκε σε συνώνυμο του πονοκεφάλου για κάθε προγραμματιστή. Με τη ραγδαία εξέλιξη των ηλεκτρονικών και των πληροφοριακών συστημάτων που ακολούθησε, δεν εξελίχθηκαν μόνο τα προγράμματα. Τα bugs άφησαν πίσω τη βιολογική τους μορφή κι έγιναν πολύ πιο περίπλοκα. Καθώς μάλιστα οι υπολογιστές άρχισαν να εμπλέκονται περισσότερο στη ζωή μας, πολλά από αυτά τα bugs έγιναν κι εξαιρετικά επικίνδυνα. Μολαταύτα, σχεδόν 70 χρόνια μετά, η ουσία των bugs παραμένει ίδια: Πρόκειται για σχεδιαστικά ή προγραμματιστικά λάθη, ενδεχομένως μαζί με άλλες παραλείψεις, τα οποία κάνουν ένα σύστημα να συμπεριφέρεται απρόβλεπτα. Κάπως έτσι, όσοι ασχολούνται με την ανάπτυξη εφαρμογών αντιμετωπίζουν το εξής αγωνιώδες ερώτημα: Πώς μπορώ να αποφύγω ή να διορθώσω έγκαιρα τα λάθη στον κώδικά μου; Αντίστοιχα, όσοι ειδικεύονται στην ασφάλεια των συστημάτων βασανίζουν το μυαλό τους με το ίδιο ακριβώς πρόβλημα: Πώς μπορώ να βρω τα bugs στον κώδικα άλλων;

Μια παραδοχή που μπορούμε να κάνουμε με ασφάλεια είναι ότι τα bugs δεν θα εκλείψουν ποτέ. Υπάρχουν σε πάρα πολλά συστήματα και προγράμματα, ενώ είναι σίγουρο ότι δεν θα σταματήσουν να εμφανίζονται και σε νέα. Άλλωστε, αν λάβουμε υπόψη τις πρόσφατες εξελίξεις (βλέπε Heartbleed και Shellshock), συνειδητοποιούμε ότι όσα μάτια κι αν κοιτάζουν τον κώδικα ενός προγράμματος, ακόμα και για ολόκληρες δεκαετίες, υπάρχει πάντα η πιθανότητα να ξεφύγει κάτι. Παραδοσιακά, ο εντοπισμός των bugs πραγματοποιείται με τη μελέτη του πηγαίου κώδικα. Υπάρχει όμως και μια σχετικά νεότερη τεχνική που ακούει στο όνομα fuzz testing ή αλλιώς fuzzing.

Διαβάστε ολόκληρο το άρθρο στο deltaHacker 039 (τεύχος Δεκεμβρίου 2014).

Το μηνιαίο περιοδικό deltaHacker είναι αποκλειστικά ψηφιακό (μορφή PDF). Μάθετε για τις απίστευτες τιμές των συνδρομών που προσφέρουμε, δείτε όλα τα τεύχη που έχουν κυκλοφορήσει ως τώρα, καθώς επίσης και τα εκτενή κι αναλυτικά video tutorials (deltaCast Episodes) που παράγουμε. Μπορείτε να κάνετε την παραγγελία του πακέτου συνδρομής που σας ταιριάζει από τη σχετική φόρμα. Προσοχή: Για την πλήρη πρόσβαση στα video tutorials απαιτείται ενεργή συνδρομή στο περιοδικό.

5 Responses to “Data που χορεύουν ή αλλιώς εισαγωγή στο fuzzing”

  1. sc0rpion | 12/03/2015 at 01:07

    Φοβερό θέμα παιδιά, το ευχαριστηθηκα, συνεχίστε έτσι!!!

    Στο μέλλον θα ήθελα να δω και fuzzers που είναι περισσοτερο για εφαρμογές που τρέχουν στα Windows.

    Επίσης, έχετε καμια ιδέα πως θα μπορούσε κανείς να κάνει fuzzing σε εφαρμογές που δεν δέχονται παραμέτρους απο το terminal αλλα απο inputs που βρισκονται σε γραφικο περιββαλον (GUI) της εφαρμογης?

  2. dd3coy | 31/03/2015 at 11:06

    Ευχαριστούμε πολύ!

    Για Windows επιφυλάσσομαι για άρθρο στο μέλλον που θα αναλύει τον Peach Fuzzer (τουλάχιστον την community edition).

    Σχετικά με GUI για να σου απαντήσω θα ήθελα κάποιο πιο συγκεκριμένο παράδειγμα, μιας και δεν υπάρχει ένας standard τρόπος.

    Υ.Γ Συγγνώμη για την καθυστερηση, το notification είχε πάει στα spam :)

    • sc0rpion | 01/04/2015 at 20:09

      Μην ανησυχείς για την καθυστερηση, δεν παρεξηγώ εγω :P

      Οταν λεω GUI, εννοω οτι εχουμε καποιο προγραμμμα σαν αυτο εδω που φενεται στο screenshot: http://www.tutorialspoint.com/vb.net/images/vb.net_textbox2.jpg

      Πως μπορουμε να κανουμε fuzzing στα πεδια “Name”, “Organization” και “Comment” εφόσων δεν τα δεχεται απο command line το προγραμμμα?

  3. dd3coy | 16/04/2015 at 12:00

    Σε αυτή την περίπτωση πρέπει αφενός να αυτοματοποιήσεις την είσοδο δεδομένων και αφετέρου να έχεις έναν κατάλληλο fuzzer που να παράγει “απροσδόκητα” δεδομένα. Για το πρώτο κομμάτι (που φαντάζομαι είναι το κύριο μέρος της ερώτησης σου) σε παραπέμπω σε αυτό τον οδηγό της Microsoft

    https://msdn.microsoft.com/en-us/magazine/cc163738.aspx

    Με λίγα λόγια πρέπει να γράψεις προγραμματα που να αναγνωρίζουν στοιχεία του GUI και να προσομοιώνουν input του χρήστη.Όπως καταλαβαίνεις βέβαια ένας τέτοιος fuzzer θα είναι εντελώς διαφορετικός για κάθε application.

  4. sc0rpion | 19/04/2015 at 12:39

    Καλα καταλαβες, ουσιαστικα το προβλημα μου ειναι πως θα καταφερω να στειλω αυτα τα random δεδομενα στην εφαρμογη GUI χωρις να εχω το source code της φυσικα.

    Ευχαριστω για το link, θα το κοιταξω και αν οντως με βοηθαει να κανω αυτο που θελω θα κανω παλι post εδω για feedback.

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

Αρχείο δημοσιεύσεων