Συνεχίζοντας τον κύκλο άρθρων σχετικά με την ασφάλεια σε δικτυακά περιβάλλοντα σε συνεργασία με τον Παναγιώτη Καλαντζή έχουμε αισίως φτάσει στην έβδομη θέση των συνηθέστερων αδυναμιών όπου παρουσιάζεται η ελλιπής επιβεβαίωση δικαιωμάτων χρήστη που θέτει αίτημα στην διαδικτυακή εφαρμογή. Οι διαδικτυακές εφαρμογές στις μέρες μας είναι ιδιαίτερα πολύπλοκα δημιουργήματα που καλούνται να αποδώσουν διαφορετικά δικαιώματα δράσης στους χρήστες τους. Παρότι πολλαπλές ιεραρχίες δικαιωμάτων μπορούν να υπάρχουν ακόμα και στην ίδια εφαρμογή, στο προκείμενο θα θεωρήσουμε την απλουστευμένη υπόθεση όπου ο ένας χρήστης έχει δικαιώματα διαχειριστή και ο άλλος όχι. Το πρόβλημα ξεκινά λοιπόν από το γεγονός πως η διαδικτυακή εφαρμογή συνήθως επιτελεί πληθώρα διαδικασιών κάθε μια από τις οποίες πρέπει να εκτελείται μόνο κατόπιν ελέγχων δικαιωμάτων χρήστη, μια διαδικασία που πολύ συχνά είναι πολύπλοκη στον προσδιορισμό, δεν υλοποιείται από τον προγραμματιστή ή γίνεται κεντρικά από ένα αρχείο ρυθμίσεων που δεν εξατομικεύτηκε στην εφαρμογή ποτέ.
Έτσι ο επιτιθέμενος με δικαιώματα απλού χρήστη (και όχι διαχειριστή) σχεδιάζει ένα αίτημα, στην απλούστερη των περιπτώσεων βάσει αιτήματος HTTP GET, που απαιτεί δικαιώματα διαχειριστή και προσπαθεί να εντοπίσει λειτουργίες που θα του επιτραπούν!
Σκεφτείτε την περίπτωση όπου ο απλός χρήστης μετά την επιτυχή αυθεντικοποίηση μπορεί να εκτελέσει την λειτουργία του URL
http://o_server.com/view_all_users
αλλά επίσης μπορεί να εκτελέσει και την λειτουργία του URL
http://o_server.com/delete_user_id_1
η οποία απαιτεί δικαιώματα διαχειριστή.
Δυστυχώς ο εντοπισμός των προβληματικών εφαρμογών στις εν λόγω επιθέσεις είναι αρκετά δύσκολος και απαιτεί στην γενικευμένη περίπτωση εξαντλητική διερεύνηση κάθε λειτουργίας της εφαρμογής ώστε να βεβαιωθεί αν παρουσιάζονται στους χρήστες σύνδεσμοι εκτός του εύρους των δικαιωμάτων τους, αν γίνεται έλεγχος δικαιωμάτων στην πλευρά του διακομιστή και φυσικά αν οι έλεγχοι αυτοί βασίζονται σε δεδομένα που δίνει ο χρήστης (και ακολούθως είναι εκμεταλλεύσιμα).
Τα συνήθη αποτελέσματα της εκμετάλλευσης της αδυναμίας αυτής είναι πως ο επιτιθέμενος μπορεί να εκμεταλλευτεί λειτουργίες της εφαρμογής για τις οποίες δεν έχει κατάλληλα δικαιώματα!
Ακολούθως, σε επιχειρηματικό επίπεδο πρέπει κανείς να θεωρεί τις συνέπειες των επιθέσεων αυτού του τύπου ως σοβαρές καθώς επιτρέπουν στους χρήστες δικαιώματα και λειτουργίες διαχειριστή βλάπτοντας την επιχειρηματική υπόληψη.
Για την αντιμετώπιση της εν λόγω αδυναμίας, βέλτιστη λύση συνίσταται στη χρήση κεντρικής οργανωμένης μεθοδολογίας αυθεντικοποίησης η οποία να είναι επιπλέον και εύκολα εξετάσιμη ώστε να είναι προφανή τα πιθανά προβλήματα. Έτσι, η μεθοδολογία αυτή πρέπει να εστιάζει σε:
- Τη διαδικασία ανάθεσης δικαιωμάτων, τα επίπεδα δικαιωμάτων και την ευκολία μεταβολής των δικαιωμάτων μιας λειτουργίας,
- Την συνήθη πρακτική αρχικής παντελούς άρνησης εκτέλεσης από όλους τους χρήστες και τον μετέπειτα προσδιορισμό εξαιρέσεων.
Στο επόμενο άρθρο θα δούμε την αδυναμία που προκαλείται από τη έκθεση των ευαίσθητων δεδομένων της διαδικτυακής εφαρμογής και των συνεπειών μιας τέτοιας έκθεσης (Sensitive Data Exposure).
Επικοινωνήστε μαζί μας για να συζητήσουμε πώς μπορεί το διαδικτυακού λογισμικό σας να γίνει ασφαλέστερο προστατεύοντας την επιχείρησή και τους πελάτες σας.