Συλλογές | |
---|---|
Τίτλος |
Stack-based buffer overflows on ARM processors |
Εναλλακτικός τίτλος |
Υπερχειλίσεις στοίβας σε ARM επεξεργαστές |
Δημιουργός |
Γεροκώστας, Ευθύμιος |
Συντελεστής |
Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Ντούσκας, Θεόδωρος Στεργιόπουλος, Γιώργος Γκρίτζαλης, Δημήτρης |
Τύπος |
Text |
Φυσική περιγραφή |
60σ. |
Γλώσσα |
el |
Αναγνωριστικό |
http://www.pyxida.aueb.gr/index.php?op=view_object&object_id=9549 |
Περίληψη |
ARM processors are everywhere around us, in phones, routers and IoT devices that seem to explode in sales these days. The ARM processor has become one of the most widespread CPU cores in the world, with more devices featuring an ARM processor than an Intel processor. Like computers, all devices are vulnerable to incorrect user input validation, which can lead to buffer overflows. Given the widespread usage of ARM-based devices and the potential for misuse, attacks on these devices have become much more common. However, research is mostly focused into the security of x86 processors than ARM, even though ARM is considered by the majority as the easiest assembly language in use. This may be because there are more learning resources covering exploitation on Intel processors than there are for ARM. The purpose of this work is to contribute to the research around the attacks on ARM processors, presenting the way of exploiting one of the classic vulnerabilities, the stack-based overflow, while presenting mitigation techniques and methods to bypass these mitigation techniques. For the reader to be able to understand the technical steps required to accomplish the attack, an extensive reference will be made to the ARM architecture, the set of commands it uses, the way the ARM processor interacts with the computer memory, the flow control of a program in ARM assembly language and how the functions store the variables they use in the stack. Furthermore, an analysis of the stack overflow vulnerability will be demonstrated, as also the methodology a malicious user must follow to exploit a vulnerability of this kind. Also, we will refer to the writing of shellcode in ARM assembly and specifically to system calls, which if abused can provide to the attacker privileged access to the system. Finally, we will There are mitigation techniques for such attacks, but there are also specialized techniques that can be used to bypass them. Such techniques are secure programming, Stack Canaries, No-Execute and ASLR. Οι ARM επεξεργαστές είναι παντού γύρω μας, σε τηλέφωνα, δρομολογητές και σε συσκευές IoT που εκρήγνυνται σε πωλήσεις αυτές τις μέρες. Είναι πλέον ένας από τους πιο διαδεδομένους επεξεργαστές στον κόσμο με τις περισσότερες ηλεκτρονικές συσκευές να διαθέτουν ARM αντί για Intel επεξεργαστή. Όπως οι υπολογιστές, έτσι και όλες οι συσκευές είναι ευάλωτες σε λανθασμένη επικύρωση εισόδου του χρήστη, που μπορεί να οδηγήσει σε υπερχείλιση της προσωρινής μνήμης. Δεδομένης της ευρείας χρήσης συσκευών που βασίζονται σε ARM και της πιθανότητας κακής χρήσης, οι επιθέσεις σε αυτές τις συσκευές έχουν γίνει πολύ πιο συνηθισμένες.Σκοπός λοιπόν αυτής της εργασίας είναι να συνεισφέρει στην έρευνα γύρω από τις επιθέσεις σε ARM επεξεργαστές, παρουσιάζοντας τον τρόπο εκμετάλλευσης μίας από τις κλασσικές ευπάθειες, την υπερχείλιση της στοίβας, αλλά και να παρουσιάσει τα μέτρα που χρησιμοποιούνται για αποφυγή αυτών των επιθέσεων, καθώς και τρόπους παράκαμψης αυτών. Προκειμένου ο αναγνώστης να είναι σε θέση να κατανοήσει τα τεχνικά βήματα που απαιτούνται ώστε να επιτευχθεί η επίθεση, θα γίνει μία εκτενής αναφορά στην ARM αρχιτεκτονική, το σύνολο εντολών που χρησιμοποιεί, τον τρόπο που ο ARM επεξεργαστής αλληλοεπιδρά με την μνήμη του υπολογιστή, τον έλεγχο ροής ενός προγράμματος σε συμβολική γλώσσα ARM και τον τρόπο που οι συναρτήσεις αποθηκεύουν τις μεταβλητές που χρησιμοποιούν στη στοίβα. Έπειτα, θα πραγματοποιηθεί ανάλυση της ευπάθειας υπερχείλισης της στοίβας και της μεθοδολογίας που κάποιος κακόβουλος χρήστης του προγράμματος θα ακολουθήσει, προκειμένου να εκμεταλλευτεί μια ευπάθεια αυτής της μορφής. Στη συνέχεια, θα αναφερθούμε στην συγγραφή κώδικα εκμετάλλευσης σε συμβολική γλώσσα ARM και συγκεκριμένα στις συστημικές κλήσεις, καθώς με την χρήση αυτών ο επιτιθέμενος είναι δυνατό να αποκτήσει δικαιώματα διαχειριστή στο σύστημα. Τέλος, θα αναπτύξουμε τεχνικές που εφαρμόζονται και αποσκοπούν στην μετρίαση επιθέσεων τέτοιου είδους, αλλά και αντίστοιχα σε εξειδικευμένες τεχνικές που μπορούν να τις παρακάμψουν. Σε αυτές τις τεχνικές μετρίασης των επιθέσεων περιλαμβάνονται η συγγραφή ασφαλή κώδικα, τα “Stack Canaries”, το “No-Execute” και το “ASLR”. |
Λέξη κλειδί |
Bypass Υπερχείλιση Στοίβα Μνήμη Παράκαμψη Overflow Stack ARM Memory |
Διαθέσιμο από |
2022-07-02 14:27:14 |
Ημερομηνία έκδοσης |
07/07/2021 |
Ημερομηνία κατάθεσης |
2022-07-02 14:27:14 |
Δικαιώματα χρήσης |
Free access |
Άδεια χρήσης |
https://creativecommons.org/licenses/by/4.0/ |