Πίνακας περιεχομένων:
Ορισμός - Τι σημαίνει το Stack Smashing;
Η κατάρρευση στοίβας είναι μια μορφή ευπάθειας όπου η στοίβα μιας εφαρμογής υπολογιστή ή λειτουργικού συστήματος είναι αναγκασμένη να υπερχειλίσει. Αυτό μπορεί να οδηγήσει σε υπονόμευση του προγράμματος / συστήματος και συντριβή του.
Μια στοίβα, ένα πρώτο σε τελευταίο κύκλωμα, είναι μια μορφή buffer που κρατά ενδιάμεσα αποτελέσματα των λειτουργιών μέσα σε αυτήν. Για να απλοποιήσετε, στοιβάζετε την κατάρρευση της τοποθέτησης περισσότερων δεδομένων σε μια στοίβα από την ικανότητα συγκράτησης. Οι εξειδικευμένοι χάκερ μπορούν σκόπιμα να εισάγουν υπερβολικά δεδομένα στη στοίβα. Τα υπερβολικά δεδομένα μπορεί να αποθηκευτούν σε άλλες μεταβλητές στοίβας, συμπεριλαμβανομένης της διεύθυνσης επιστροφής λειτουργίας. Όταν η συνάρτηση επιστρέφει, μεταβαίνει στον κακόβουλο κώδικα στη στοίβα, πράγμα που μπορεί να καταστρέψει ολόκληρο το σύστημα. Τα παρακείμενα δεδομένα στη στοίβα επηρεάζονται και αναγκάζουν το πρόγραμμα να καταρρεύσει.
Η Techopedia εξηγεί το Stack Smashing
Εάν το πρόγραμμα που επηρεάζεται από το σπάσιμο της στοίβας δεχτεί δεδομένα από μη αξιόπιστα δίκτυα και λειτουργεί με ειδικά προνόμια, πρόκειται για περίπτωση ευπάθειας ασφαλείας. Εάν το buffer περιέχει δεδομένα που παρέχονται από έναν μη αξιόπιστο χρήστη, η στοίβα μπορεί να καταστραφεί με την έγχυση εκτελέσιμου κώδικα στο πρόγραμμα, αποκτώντας έτσι μη εξουσιοδοτημένη πρόσβαση σε έναν υπολογιστή. Ένας εισβολέας μπορεί επίσης να αντικαταστήσει τις πληροφορίες ροής ελέγχου που είναι αποθηκευμένες στη στοίβα.
Καθώς η κατάρρευση της στοίβας έχει εξελιχθεί σε πολύ σοβαρή ευπάθεια, ορισμένες τεχνολογίες υλοποιούνται για να ξεπεραστεί η καταστροφή της στοίβας. Η προστασία υπερχείλισης του Stack Buffer αλλάζει την οργάνωση των δεδομένων στο πλαίσιο στοίβας μιας κλήσης λειτουργίας για να συμπεριλάβει τις τιμές των καναρινιών. Αυτές οι τιμές όταν καταστρέφονται υποδεικνύουν ότι μια προσωρινή μνήμη που προηγείται της στη μνήμη έχει ξεπεραστεί. Οι τιμές των καναρινιών παρακολουθούν υπερχείλιση του buffer και τοποθετούνται μεταξύ των δεδομένων ελέγχου και του buffer στη στοίβα. Αυτό εξασφαλίζει ότι μια υπερχείλιση buffer απογοητεύει πρώτα τον καναρίο. Μια αποτυχημένη επαλήθευση των δεδομένων του καναρινιού δηλώνει μια υπερχείλιση στη στοίβα. Οι τρεις τύποι καναρίνι είναι Random, Terminator και Random XOR.
Ο καναρίνιος τερματισμού βασίζεται στο γεγονός ότι η επίθεση υπερχείλισης του stack buffer εξαρτάται από τις λειτουργίες string που τελειώνουν στους τερματιστές. Τα τυχαία καναρίνια παράγονται τυχαία από ένα δαίμονα συλλογής εντροπίας, το οποίο εμποδίζει τους επιτιθέμενους να γνωρίζουν αξίες. Τυχαία καναρίνια δημιουργούνται κατά την αρχικοποίηση του προγράμματος και αποθηκεύονται σε μεταβλητές παγκόσμιας εμβέλειας. Τα τυχαία XOR καναρίνια είναι τυχαίοι φορείς που είναι κωδικοποιημένοι με XOR χρησιμοποιώντας δεδομένα ελέγχου. Είναι παρόμοιο με τυχαία καναρίνια, εκτός από το ότι η μέθοδος "ανάγνωσης από τη στοίβα" για να πάρει κανάρες είναι πολύπλοκη. Ο χάκερ χρειάζεται τον καναρίνι, τον αλγόριθμο και τα δεδομένα ελέγχου για να παράγει το αρχικό καναρίνι. Προστατεύουν από επιθέσεις που περιλαμβάνουν υπερχείλιση buffer σε μια δομή σε δείκτες για να αλλάξουν δείκτη σε σημείο σε ένα κομμάτι των δεδομένων ελέγχου.