Υποστήριξη NX στο Linux
Posted: Thu Jun 10, 2004 4:55 pm
Μετά από μια εκτενή συζήτηση στη linux-kernel, τη λίστα στην οποία διεξάγεται η ανάπτυξη του Linux kernel, ο Linus Torvalds αποφάσισε να εγκρίνει το patch του Ingo Molnar (RedHat) για την υποστήριξη της τεχνολογίας ΝΧ.
Η τεχνολογία ΝΧ (No Execute) υποστηρίζεται από ολοκληρωμένα των Intel, AMD και Transmeta και αφορά στον έλεγχο εκτελέσιμων stacks για πιθανή εκτέλεση κώδικα μετά από μια αστοχία software, λόγω buffer overflow. Με αυτό τον τρόπο μειώνεται η πιθανότητα κατασκευής exploits, τα οποία έχουν στόχο τη διείσδυση σε ευάλωτα μηχανήματα από τρίτους.
Η κατασκευή ενός buffer overflow exploit βασίζεται στην υπερχείλιση του stack, μιας εφαρμογής με κώδικα της αρεσκείας του cracker. Για να συμβεί αυτό, η ευάλωτη εφαρμογή θα πρέπει να έχει κάποιο bug, το οποίο οφείλεται στην κακή συγγραφή του κώδικα από τον αρχικό δημιουργό της. Αναλυτικότερα, δεν έχει δεσμευτεί σωστά κάποιο κομμάτι μνήμης ικανό να συγκρατήσει μια ποσότητα πληροφορίας που θα αντιγραφεί σε αυτό.
Μια λύση για το παραπάνω είναι η υποστήριξη non-executable stack από το λειτουργικό σύστημα. Δυστυχώς, και σε αυτή την περίπτωση ο cracker μπορεί και πάλι να εκτελέσει τον κώδικα της αρεσκείας του αλλά η πιθανότητα επιτυχίας μειώνεται.
Μια δεύτερη λύση, η οποία χρησιμοποιείται από το OpenBSD, είναι να φορτώνονται στη μνήμη, σε όχι προκαθορισμένη σειρά, οι δυναμικές βιβλιοθήκες που χρησιμοποιούνται από τις εφαρμογές.
Σε αυτήν την περίπτωση το memory image μιας (dynamically linked) εφαρμογής διαφέρει σε κάθε εκτέλεση και οι υπολογισμοί που απαιτούνται από τον cracker είναι αρκετά πιο επίπονοι. Φυσικά, η επίθεση και πάλι μπορεί να πραγματοποιηθεί, αλλά πολύ πιο δύσκολα. Η λύση αυτή αφορά μόνο στις δυναμικά linked εφαρμογές, κοινώς στη συντριπτική πλειοψηφία των προγραμμάτων που χρησιμοποιούνται σε καθημερινή βάση από τους χρήστες.
Μια τρίτη λύση είναι η τεχνολογία NX που έχει αναπτυχθεί από τους μεγάλους κατασκευαστές επεξεργαστών αρχιτεκτονικής Intel και η οποία αποσκοπεί στον έλεγχο του stack σε επίπεδο hardware (ουσιαστικά είναι υποστήριξη non-executable stack). Για να ενεργοποιηθεί το NX, θα πρέπει να υπάρχει υποστήριξη από το λειτουργικό σύστημα. Σε περίπτωση που ένα λειτουργικό σύστημα αποφασίσει να υποστηρίξει την εν λόγω τεχνολογία, το τίμημα είναι κάποιες υπάρχουσες εφαρμογές να πάψουν να λειτουργούν.
Μέχρι στιγμής, ο αριθμός των εφαρμογών που θα έχουν πρόβλημα μετά την υποστήριξη NX στο Linux κρίνεται ότι κυμαίνεται σε χαμηλά επίπεδα, αν και αυτό είναι μόνο μια εκτίμηση.
Η τεχνολογία NX θα υποστηρίζεται και στην οικογένεια λειτουργικών συστημάτων της Microsoft, με την εγκατάσταση του Service Pack 2, το οποίο αναμένεται να γίνει διαθέσιμο το τρίτο τετράμηνο του 2004.
Πηγή:http://www.pathfinder.gr
Η τεχνολογία ΝΧ (No Execute) υποστηρίζεται από ολοκληρωμένα των Intel, AMD και Transmeta και αφορά στον έλεγχο εκτελέσιμων stacks για πιθανή εκτέλεση κώδικα μετά από μια αστοχία software, λόγω buffer overflow. Με αυτό τον τρόπο μειώνεται η πιθανότητα κατασκευής exploits, τα οποία έχουν στόχο τη διείσδυση σε ευάλωτα μηχανήματα από τρίτους.
Η κατασκευή ενός buffer overflow exploit βασίζεται στην υπερχείλιση του stack, μιας εφαρμογής με κώδικα της αρεσκείας του cracker. Για να συμβεί αυτό, η ευάλωτη εφαρμογή θα πρέπει να έχει κάποιο bug, το οποίο οφείλεται στην κακή συγγραφή του κώδικα από τον αρχικό δημιουργό της. Αναλυτικότερα, δεν έχει δεσμευτεί σωστά κάποιο κομμάτι μνήμης ικανό να συγκρατήσει μια ποσότητα πληροφορίας που θα αντιγραφεί σε αυτό.
Μια λύση για το παραπάνω είναι η υποστήριξη non-executable stack από το λειτουργικό σύστημα. Δυστυχώς, και σε αυτή την περίπτωση ο cracker μπορεί και πάλι να εκτελέσει τον κώδικα της αρεσκείας του αλλά η πιθανότητα επιτυχίας μειώνεται.
Μια δεύτερη λύση, η οποία χρησιμοποιείται από το OpenBSD, είναι να φορτώνονται στη μνήμη, σε όχι προκαθορισμένη σειρά, οι δυναμικές βιβλιοθήκες που χρησιμοποιούνται από τις εφαρμογές.
Σε αυτήν την περίπτωση το memory image μιας (dynamically linked) εφαρμογής διαφέρει σε κάθε εκτέλεση και οι υπολογισμοί που απαιτούνται από τον cracker είναι αρκετά πιο επίπονοι. Φυσικά, η επίθεση και πάλι μπορεί να πραγματοποιηθεί, αλλά πολύ πιο δύσκολα. Η λύση αυτή αφορά μόνο στις δυναμικά linked εφαρμογές, κοινώς στη συντριπτική πλειοψηφία των προγραμμάτων που χρησιμοποιούνται σε καθημερινή βάση από τους χρήστες.
Μια τρίτη λύση είναι η τεχνολογία NX που έχει αναπτυχθεί από τους μεγάλους κατασκευαστές επεξεργαστών αρχιτεκτονικής Intel και η οποία αποσκοπεί στον έλεγχο του stack σε επίπεδο hardware (ουσιαστικά είναι υποστήριξη non-executable stack). Για να ενεργοποιηθεί το NX, θα πρέπει να υπάρχει υποστήριξη από το λειτουργικό σύστημα. Σε περίπτωση που ένα λειτουργικό σύστημα αποφασίσει να υποστηρίξει την εν λόγω τεχνολογία, το τίμημα είναι κάποιες υπάρχουσες εφαρμογές να πάψουν να λειτουργούν.
Μέχρι στιγμής, ο αριθμός των εφαρμογών που θα έχουν πρόβλημα μετά την υποστήριξη NX στο Linux κρίνεται ότι κυμαίνεται σε χαμηλά επίπεδα, αν και αυτό είναι μόνο μια εκτίμηση.
Η τεχνολογία NX θα υποστηρίζεται και στην οικογένεια λειτουργικών συστημάτων της Microsoft, με την εγκατάσταση του Service Pack 2, το οποίο αναμένεται να γίνει διαθέσιμο το τρίτο τετράμηνο του 2004.
Πηγή:http://www.pathfinder.gr