Υποστήριξη NX στο Linux
- HdkiLLeR
- Venus Project Founder
- Posts: 4356
- Joined: Tue Jan 27, 2004 4:41 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: New York, NY
- Contact:
Υποστήριξη NX στο Linux
Μετά από μια εκτενή συζήτηση στη 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
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
- HdkiLLeR
- Venus Project Founder
- Posts: 4356
- Joined: Tue Jan 27, 2004 4:41 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: New York, NY
- Contact:
Και οι P4 απο 3.2 και μετά
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
- HdkiLLeR
- Venus Project Founder
- Posts: 4356
- Joined: Tue Jan 27, 2004 4:41 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: New York, NY
- Contact:
Ναι αλλά απο 3.02 ήθελα να πώ πρίν. Έτσι έχει πάρει κάτι το μάτι μου δεν το έχω ψάξει καθόλου.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
- HdkiLLeR
- Venus Project Founder
- Posts: 4356
- Joined: Tue Jan 27, 2004 4:41 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: New York, NY
- Contact:
Μα το shellcode πρέπει να μπεί σε περιοχή η οποία ανήκει/έχει καταχωρηθεί/έχει πρόσβαση η διεργασία γιατί αλλιώς το OS δεν θα το θα επιστρέψει την μεταφορά της εκτελέσης εκεί και θα πάρεις error. Γι' αυτό και τα περισσότερα μπαίνουν στο buffer το οποίο ανήκει στην διεργασία. Βασικά το παραπάνω απο τα Oses που είναι σοβαρά έτσι γιατί απο τα win ακόμη και στο hyperterminal βρίσκουν bofs.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
- HdkiLLeR
- Venus Project Founder
- Posts: 4356
- Joined: Tue Jan 27, 2004 4:41 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: New York, NY
- Contact:
Ναι έτσι μου φαίνεται λειτουργούν τα heap exploits περίπου αλλά δεν είναι τόσο συχνά σε σχέση με τα bofs.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie