Πώς λειτουργούν οι επιθέσεις υπερχείλισης buffer; Πηγαίνοντας πίσω από τις σκηνές ως χάκερ

Πώς λειτουργούν οι επιθέσεις υπερχείλισης buffer; Πηγαίνοντας πίσω από τις σκηνές ως χάκερ
Αναγνώστες σαν εσάς βοηθούν στην υποστήριξη του MUO. Όταν κάνετε μια αγορά χρησιμοποιώντας συνδέσμους στον ιστότοπό μας, ενδέχεται να κερδίσουμε μια προμήθεια θυγατρικών. Διαβάστε περισσότερα.

Πώς επιτίθενται οι χάκερ σε συστήματα χρησιμοποιώντας ιούς και κακόβουλο λογισμικό; Μερικές φορές, μπορεί να είναι ransomware. Μερικές φορές, μπορεί να είναι μια επίθεση που καταναλώνει τις απαιτήσεις του συστήματός σας. Η υπερχείλιση buffer είναι μία από αυτές τις μεθόδους επίθεσης — αλλά τι είναι στην πραγματικότητα; Πώς λειτουργούν αυτές οι επιθέσεις;





ΚΑΤΑΣΚΕΥΗ ΒΙΝΤΕΟ ΤΗΣ ΗΜΕΡΑΣ ΚΥΛΙΣΤΕ ΓΙΑ ΝΑ ΣΥΝΕΧΙΣΕΤΕ ΜΕ ΠΕΡΙΕΧΟΜΕΝΟ

Τι είναι η υπερχείλιση buffer;

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





Το stack είναι ουσιαστικά μια δομή δεδομένων στην οποία λαμβάνουν χώρα οι λειτουργίες push (προσθήκη) και pop (αφαίρεση) δεδομένων. Οι έννοιες του buffer και του stack είναι αρκετά παρόμοιες. Ωστόσο, το buffer λειτουργεί σαν στοίβα που αποθηκεύει προσωρινά τα εισερχόμενα δεδομένα.





Οι υπερχειλίσεις buffer μπορεί να είναι ένα δύσκολο θέμα, αλλά όπως υποδηλώνει το όνομα, συμβαίνει όταν υπάρχει υπερφόρτωση δεδομένων. Για παράδειγμα, θέλετε να συνδεθείτε σε ένα σύστημα. Οι προγραμματιστές μπορούν να διαθέσουν 250 byte χώρου για το όνομα χρήστη. Εάν εισαγάγετε 300 byte δεδομένων, το buffer υπερχειλίζει. Αυτή η υπερχείλιση μπορεί να επηρεάσει άλλα δεδομένα στη μνήμη, προκαλώντας βλάβη.

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



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





ποια υπηρεσία παράδοσης πληρώνει περισσότερο

Κώδικας Συναρμολόγησης





Γλώσσα προγραμματισμού χαμηλού επιπέδου , δηλαδή κοντά στη γλώσσα μηχανής.

Ρυθμιστής

Σταθερό μέγεθος εκχωρημένος χώρος μνήμης .

Κωδικός byte

Μια μεταγλωττιζόμενη ενδιάμεση γλώσσα μορφή κώδικα γραμμένη σε γλώσσα υψηλού επιπέδου.

Μεταγλωττιστής

Ένα πρόγραμμα που μετατρέπει τη γλώσσα προγραμματισμού σε κώδικα μηχανής.

πώς να ηχογραφήσετε τηλεόραση sling στον υπολογιστή

Σωρός

Δυναμικός, μεταβλητός χώρος μνήμης.

The Fundamentals of Memory Theory

Χωρίς κατανόηση της θεωρίας της μνήμης, μπορεί να είναι δύσκολο να αντιμετωπιστούν στην πράξη ζητήματα υπερχείλισης buffer. Μπορείτε να το σκεφτείτε σαν να προσπαθείτε να χτίσετε ένα σπίτι χωρίς να ξέρετε πώς να φτιάξετε έναν τοίχο.

Φανταστείτε ότι θέλετε να εκτελέσετε μια υπερχείλιση buffer από την πλευρά ενός χάκερ. Για αυτό, πρέπει να χειριστείτε τη μνήμη και να αφήσετε την CPU να εκτελέσει τον κώδικά σας. Εάν ήσασταν κάποιος με κακόβουλη πρόθεση, ο στόχος σας εδώ θα ήταν να υπερφορτώσετε τη μνήμη και να χειριστείτε επίσης συνεχόμενες περιοχές μνήμης.

  Διάγραμμα που δείχνει τη στοίβα να μεγαλώνει και το σωρό να μεγαλώνει

Αλλά πρώτα απ 'όλα, πρέπει να εστιάσετε στις έννοιες του σωρού, της στοίβας και του τμήματος κειμένου.

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

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

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

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

  • ESP (Extended Stack Pointer): Αυτός ο καταχωρητής διατηρεί τη διεύθυνση στην κορυφή της στοίβας.
  • EBP (Extended Base Pointer): Αυτό κρατά τον δείκτη βάσης.
  • EIP (Extended Instruction Pointer): Και αυτός ο καταχωρητής περιέχει τη διεύθυνση της επόμενης εντολής που θα εκτελεστεί.

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

Πώς λειτουργούν οι επιθέσεις υπερχείλισης buffer;

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

χρησιμοποιήστε φορητό υπολογιστή ως οθόνη
  Διάγραμμα που δείχνει τον χώρο προσωρινής αποθήκευσης να βρίσκεται κάπου μεταξύ ESP και EBP

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

  Ένα διάγραμμα που δείχνει τα δεδομένα στο ESP που στοχεύουν τη διεύθυνση επιστροφής

Με κάθε νέο bit δεδομένων, η στοίβα αυξάνεται προς το EBP. Το πραγματικό ερώτημα εδώ είναι, εάν εισάγουμε πάρα πολλά δεδομένα, μπορούμε να ωθήσουμε το EBP προς το EIP; Με αυτόν τον τρόπο, τα δεδομένα ή ο κωδικός που θέλετε βρίσκονται στο EIP και μπορείτε να δείτε τα αποτελέσματα που θέλετε. Το μόνο που μένει είναι να το τρέξουμε. Όταν εκτελείτε το πρόγραμμα, δείχνει στον κωδικό EIP σας και ξεκινά την εκτέλεση. Ως αποτέλεσμα, αν ήσασταν χάκερ, θα έχετε πραγματοποιήσει την πρώτη σας επίθεση υπερχείλισης buffer.

Για να πάρετε το παράδειγμα από διαφορετική οπτική γωνία, μπορείτε να εξετάσετε υγρά διαφορετικής πυκνότητας, που ονομάζονται ESP, EBP και EIP, σε ένα δοχείο. Φανταστείτε ότι το ESP βρίσκεται στο πάνω μέρος του δοχείου επειδή η πυκνότητά του είναι μικρότερη. Όπως το ελαιόλαδο και το νερό, δεν πρέπει να ανακατεύονται. Ο κακόβουλος κώδικας, λοιπόν, είναι ένα άλλο υγρό - όταν τον προσθέτετε στο δοχείο, χαλάει αυτήν την ισορροπία, εκτοπίζει κάποιο υγρό και αναμιγνύεται με το EIP. Αυτό θα υποδηλώνει υπερχείλιση buffer.

Πώς να προστατευτείτε από επιθέσεις υπερχείλισης buffer

Λοιπόν, πώς θα σταματήσετε να συμβεί αυτό;

Πρώτον, είναι σημαντικό να υιοθετήσετε καλή πρακτική κωδικοποίησης καθ' όλη τη διαδικασία ανάπτυξης λογισμικού για να ελαχιστοποιήσετε τα τρωτά σημεία ασφαλείας. Ο προσεκτικά γραμμένος κώδικας μπορεί να μειώσει την πιθανότητα υπερχείλισης buffer.

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

Αναλάβετε δράση κατά των υπερχείλισης buffer

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