CET & Shadow Stack

Υποστηρίξτε το HackTricks

Τεχνολογία Επιβολής Ροής Ελέγχου (CET)

CET είναι μια λειτουργία ασφαλείας που εφαρμόζεται σε επίπεδο υλικού, σχεδιασμένη για να αντιμετωπίζει κοινές επιθέσεις υπεράκτιας ροής ελέγχου όπως Return-Oriented Programming (ROP) και Jump-Oriented Programming (JOP). Αυτοί οι τύποι επιθέσεων διαχειρίζονται τη ροή εκτέλεσης ενός προγράμματος για να εκτελέσουν κακόβουλο κώδικα ή να αλυσιδωθούν κομμάτια καλόβουλου κώδικα με έναν τρόπο που εκτελεί μια κακόβουλη ενέργεια.

Το CET εισάγει δύο κύρια χαρακτηριστικά: Indirect Branch Tracking (IBT) και Shadow Stack.

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

  • Το Shadow Stack είναι ένας μηχανισμός που παρέχει ακεραιότητα για τις διευθύνσεις επιστροφής. Διατηρεί έναν ασφαλή, κρυφό αντίγραφο των διευθύνσεων επιστροφής χωριστά από την κανονική στοίβα κλήσης. Όταν μια συνάρτηση επιστρέφει, η διεύθυνση επιστροφής ελέγχεται έναντι του shadow stack, αποτρέποντας τους επιτιθέμενους από το να αντικαταστήσουν διευθύνσεις επιστροφής στη στοίβα για να αποκτήσουν τον έλεγχο της ροής.

Shadow Stack

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

Πώς η CET και το Shadow Stack Αποτρέπουν Επιθέσεις

Οι επιθέσεις ROP και JOP βασίζονται στη δυνατότητα να αποκτήσουν τον έλεγχο της ροής ενός εφαρμογής εκμεταλλευόμενοι ευπάθειες που τους επιτρέπουν να αντικαταστήσουν δείκτες ή διευθύνσεις επιστροφής στη στοίβα. Καθοδηγώντας τη ροή σε ακολουθίες υπάρχοντων κώδικα gadgets ή return-oriented programming gadgets, οι επιτιθέμενοι μπορούν να εκτελέσουν αυθαίρετο κώδικα.

  • Η δυνατότητα του IBT της CET κάνει αυτές τις επιθέσεις σημαντικά πιο δύσκολες εξασφαλίζοντας ότι οι έμμεσες αλλαγές μπορούν να πηδήξουν μόνο σε διευθύνσεις που έχουν επισημανθεί ρητά ως έγκυροι στόχοι. Αυτό καθιστά αδύνατη την εκτέλεση αυθαίρετων gadgets που είναι διασκορπισμένα στο δυαδικό.

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

Υποστηρίξτε το HackTricks

Last updated