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

Βολικά σφάλματα!

Αναρωτηθήκατε ποτέ πώς καταφέρνουν οι κακόβουλοι hackers να αλλοιώνουν τη συμπεριφορά των προγραμμάτων; Το μυστικό βρίσκεται στην πρόκληση των κατάλληλων σφαλμάτων. Κι επειδή αυτή η δήλωση δεν έχει καμία αξία από μόνη της, αποφασίσαμε να σας το αποδείξουμε. Σε αυτό το άρθρο θα παρουσιάσουμε με τον απλούστερο δυνατό τρόπο μια δημοφιλή τεχνική “επίθεσης”, που έχει προκαλέσει πονοκέφαλο σε πολλούς κατασκευαστές προγραμμάτων ;)

Βολικά σφάλματα!

Όσοι έχουν έστω και την παραμικρή σχέση με τους υπολογιστές είναι σίγουρο ότι έχουν ακούσει ιστορίες για “φοβερούς και τρομερούς hackers”, οι οποίοι προσπέρασαν κάποιο σύστημα ασφάλειας, έσπασαν ένα πρόγραμμα, μπήκαν παράνομα σε κάποιο σύστημα, έκλεψαν προστατευμένα δεδομένα και πάει λέγοντας. Αν και πολλές απ’ αυτές τις ιστορίες χαρακτηρίζονται από το στοιχείο της υπερβολής, μη νομίζετε ότι είναι εντελώς φανταστικές. Αρκετές από αυτές είναι αληθινές ή, τέλος πάντων, βασίζονται σε αληθινά γεγονότα. Σκεφτείτε μόνο πόσα προγράμματα κυκλοφορούν σπασμένα ή πόσες επιθέσεις σε δικτυακούς τόπους καταγράφονται καθημερινά. Σκεφτείτε τώρα και τις επιθέσεις που δεν καταγράφονται ή δεν φτάνουν ποτέ στα αφτιά μας. Όλα αυτά όμως τα γράφει κι ο φίλος Jef, στο άρθρο του περί προστασίας των εφαρμογών. Εμείς θα κάνουμε το συνήγορο του διαβόλου κι αντί να ασχοληθούμε με την προστασία, θα αναλύσουμε μια δημοφιλή μέθοδο επίθεσης.

Ζήτημα γνώσης
Οι hackers δεν γνωρίζουν κάποια απόκρυφη τέχνη, ούτε έχουν υπερφυσικές πνευματικές δυνάμεις. Διαθέτουν όμως βαθιές γνώσεις προγραμματισμού, είναι άριστα εξοικειωμένοι με την πλατφόρμα στην οποία δουλεύουν και, πάνω απ’ όλα, έχουν καθαρή λογική. Με αυτά τα εφόδια καταφέρνουν, π.χ., να τροποποιούν τη συμπεριφορά μιας εφαρμογής, ώστε να κάνει πράγματα που δεν προβλέπονταν από τον αρχικό προγραμματισμό. Αναρωτιέστε πώς πετυχαίνουν κάτι τέτοιο;

Σε γενικές γραμμές, όταν λέμε ότι κάποιος εκμεταλλεύεται μια αδυναμία εννοούμε ότι εντοπίζει κάποια παράλειψη στον κώδικα, την οποία αξιοποιεί για να προκαλέσει κάποιο σφάλμα στην ομαλή λειτουργία του προγράμματος. Τώρα, όμως, ενδέχεται να σας δημιουργήσαμε μια νέα απορία: Πώς μπορεί κανείς να προκαλέσει σφάλμα στη λειτουργία ενός προγράμματος; Μια κλασική και απλή περίπτωση, αποτελεί το να δώσουμε σε μια συνάρτηση ή σε κάποια μεταβλητή περισσότερα δεδομένα από αυτά που μπορεί να χειριστεί. Ωραία, θα σκεφτείτε, αφού ένα τόσο απλό σφάλμα είναι στην πραγματικότητα επικίνδυνο, γιατί δεν φροντίζουν οι προγραμματιστές να το αποκλείσουν; Δεν υπάρχουν μέθοδοι για τον έλεγχο των δεδομένων που δίνει ο χρήστης; Αυτές οι ερωτήσεις χτυπάνε φλέβα! Φυσικά και υπάρχουν τέτοιες μέθοδοι, αλλά αυτό δεν σημαίνει ότι τις γνωρίζουν *όλοι* οι προγραμματιστές, ούτε ότι θυμούνται να τις χρησιμοποιήσουν *οποτεδήποτε* κι *οπουδήποτε* απαιτείται. Εξάλλου, ένας προγραμματιστής ενδέχεται να έχει συνεχώς κατά νου τους κινδύνους, αλλά να μην υλοποιεί σωστά τις μεθόδους προστασίας. Μετά από όλα αυτά, ένας νέος στο χώρο του προγραμματισμού και της ασφάλειας είναι πιθανό να σκεφτεί ως εξής: Εντάξει, το να προκαλέσουμε ένα σφάλμα στη λειτουργία ενός προγράμματος δεν είναι αδύνατο. Όμως, πώς είναι δυνατό να προσαρμόσουμε τη συμπεριφορά του στις απαιτήσεις μας, προκαλώντας ένα σφάλμα; Η απάντηση σε αυτό το ερώτημα δεν χωράει σε μία πρόταση. Υπάρχουν πολλές μέθοδοι για την “επίθεση” σε ένα πρόγραμμα και καθεμία θα μπορούσε να αποτελέσει το αντικείμενο ξεχωριστού άρθρου. Γι’ αυτό το λόγο θα επικεντρώσουμε μόνο σε μία τεχνική, η οποία θα λέγαμε ότι είναι και διάσημη. Πρόκειται για τη λεγόμενη υπερχείλιση στοίβας, που είναι περισσότερο γνωστή ως stack overflow.

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

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

3 Responses to “Βολικά σφάλματα!”

  1. l.lalakis | 07/06/2014 at 22:38

    θα ήθελα να σας κανω μια ερώτηση όσον αφορά το άρθρο αυτό. Όταν πάμε να περάσουμε το GEORGE_OF_THE_JUNGLE_DDDDDDDDDDDDDDDDD\x20\x15\x40\x00 τα δεκαεξαδικα τα βλέπει σαν χαρακτήρες και προφανώς αν το δώσουμε έτσι ακριβώς δεν θα δουλέψει. Δηλαδή αντί να δει την τιμή \x20 θα το πάρει ως τέσσερις χαρακηρες και θα τους βάλει στην στοίβα. Οπότε στο gets πως θα μπορούσαμε να περάσουμε τις hex τιμές αφού δεν αντιστοιχούν σε printable χαρακτήρες εκτός από το \x40 που αντιστοιχεί στο @ ????

  2. george.aravidis | 08/06/2014 at 20:05

    Αγαπητέ φίλε Λαλάκη,

    θα επανέλθουμε με περισσότερες πληροφορίες σύντομα ! Αυτό το άρθρο ήταν μια θεωρητική εισαγωγή στο Stack Overflow. Λιγάκι υπομονή ! :)

  3. martkonsta | 12/06/2014 at 14:50

    Βρίσκουμε την hex τιμή που μας ενδιαφέρει,την μετατρέπουμε σε δεκαδικό και (σε Windows παντα) κρατάμε πατημένο το alt και στο Numpad γράφουμε το δεκαδικό.Όταν αφήσεις το alt θα εμφανιστεί ο χαρακτήρας :)

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

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