Συνεχίζοντας τον κύκλο άρθρων σχετικά με την ασφάλεια σε δικτυακά περιβάλλοντα σε συνεργασία με τον Παναγιώτη Καλαντζή στο άρθρο αυτό εξετάζουμε την δεύτερη συνηθέστερη αδυναμία, την επισφαλή διαχείριση δεδομένων διαπίστευσης & συνεδρίας. Όπως ήδη φαντάζεστε, όσο πλησιάζουμε προς την κορυφή των κενών ασφάλειας η εμφάνισή τους στον διαδικτυακό κόσμο γίνεται όλο και συχνότερη, με την συγκεκριμένη αδυναμία να είναι καταχωριμένη ως ευρέως εμφανιζόμενη αδυναμία ασφάλειας.
Η προκείμενη αδυναμία παρουσιάζεται όταν οι προγραμματιστές της εφαρμογής σχεδιάζουν και υλοποιούν εξατομικευμένες διαδικασίες για τη διαχείριση της διαπίστευσης (authentication) και των συνεδριών (sessions), μιας και η ορθή αντιμετώπιση είναι ιδιαίτερα δύσκολη. Ακολούθως, οι εξατομικευμένες αντιμετωπίσεις αυτές έχουν συνήθως κενά ασφάλειας σε τομείς όπως η αποσύνδεση, η διαχείριση κωδικών πρόσβασης χρηστών, οι χρονικές αποσυνδέσεις, οι λειτουργίες αποθήκευσης ώστε να μη πρέπει ο χρήστης να επανεισάγει τα διαπιστευτήριά του (“remember me”) και πολλούς άλλους.
Για την διαπίστωση της ύπαρξης θέματος επισφαλούς διαχείριση δεδομένων διαπίστευσης & συνεδρίας απαιτείται η εξέταση πολλών παραγόντων και έτι η εν λόγω αδυναμία θεωρείται ως δύσκολη στον εντοπισμό της. Θέματα που χρήζουν εξέτασης είναι:
- Τα διαπιστευτήρια χρήστη δεν ασφαλή αν δεν αποθηκεύονται με χρήση κατάλληλων συναρτήσεων κατακερματισμού ή αλγορίθμους κωδικοποίησης εξειδικευμένους για συνθηματικά,
- Οι περιπτώσεις όπου τα διαπιστευτήρια μπορούν να γίνουν αντικείμενο εικασίας ή αλλοίωσης λόγω επισφαλούς διαχείρισής τους (λ.χ., δράσεων δημιουργίας λογαριασμού, αλλαγής κωδικού χρήστη, ανάκτησης κωδικού χρήστη, κλπ),
- Οι περιπτώσεις όπου τα αναγνωριστικά των συνεδριών είναι εμφανή ή προσβάσιμα από το URL της εφαρμογής,
- Οι περιπτώσεις όπου τα αναγνωριστικά των συνεδριών δεν έχουν χρονική λήξη ή/και κατά την αποσύνδεση δεν ακυρώνονται ορθά τα στοιχεία της συνεδρίας,
- Οι περιπτώσεις όπου κωδικοί χρηστών, αναγνωριστικά συνεδρίας και όποια άλλα διαπιστευτήρια χρησιμοποιούνται σε συνδέσεις που δεν έχουν κάποια κωδικοποίηση ασφάλειας.
Συνήθη σενάρια επιθέσεων εκμετάλλευσης επισφαλούς διαχείρισης δεδομένων διαπίστευσης & συνεδρίας είναι:
- η μη ορθή διαχείριση της χρονικής λήξης των συνεδριών με αποτέλεσμα χρήστες από κοινόχρηστους υπολογιστές που δεν έκαναν ρητή αποσύνδεση με το «πανταχού παρόν» πλεόν κουμπί “logout” και απλά έκλεισαν τον φυλλομετρητή να επιτρέπουν στους επόμενους χρήστες με απλή προσπέλαση της ίδιας ιστοσελίδας να συνδεθούν αυτομάτως.
- ο επιτιθέμενος μετά από επιτυχή δράση αποκτά πρόσβαση στη βάση δεδομένων όπου τα διαπιστευτήρια των χρηστών δεν είναι κατάλληλα προστατευμένα και έτσι αποκτά πρόσβαση ως όποιος χρήστης επιθυμεί.
- η χρήση αναγνωριστικών συνεδριών στο URL εφαρμογής που ανακτά πληροφορία βάσει του εν λόγω αναγνωριστικού μετατρέπει όλα τα λειτουργικά URL (που περιέχουν το αναγνωριστικό συνεδρίας) σε μεθόδους πρόσβασης τρίτων σε περιπτώσεις οικιοθελούς διαμοιρασμού τους ή αποθήκευσης στον φυλλομετρητή.
Τα αποτελέσματα της εκμετάλλευσης της αδυναμίας αυτής είναι πως ο επιτιθέμενος μπορεί να αποκτήσει πρόσβαση σε λογαριασμούς χρηστών και να δράσει με τα δικαιώματα του θύματος. Προφανώς, οι λογαριασμοί χρήστη με περισσότερα δικαιώματα είναι οι κύριοι στόχοι τέτοιων επιθέσεων.
Ακολούθως, σε επιχειρηματικό επίπεδο πρέπει κανείς να θεωρεί τις συνέπειες των επιθέσεων αυτού του τύπου ως πολύ σοβαρές καθώς όλα τα δεδομένα της εφαρμογής αλλά και η λειτουργικότητά της (μέσω των λογαριασμών με αυξημένα δικαιώματα) είναι στη διάθεση των επιτιθέμενων θίγοντας τους χρήστες αλλά και στην επιχειρηματική υπόληψη όσο αφορά την ασφάλεια των δεδομένων της εφαρμογής και την ίδια της τη λειτουργικότητα.
Για την αντιμετώπιση της εν λόγω αδυναμίας είναι απολύτως σημαντικό ο προγραμματιστής να :
- Έχει ένα και μοναδικό σύνολο μεθόδων διαχείρισης συνεδριών και διαπίστευσης που θα:
- υποστηρίζουν όλα τα κριτήρια που παρέχει ο οδηγός Application Security Verification Standard (ASVS) του OWASP,
- παρέχει απλή διεπαφή για τον προγραμματιστή.
- Αφιερώσει ιδιαίτερη προσπάθεια για την αποφυγή επιθέσεων τύπου XSS.
Στο επόμενο και τελευταίο άρθρο σχετικά με τα συνήθη κενά ασφάλειας των διαδικτυακών εφαρμογών θα δούμε την σημαντικότερη αδυναμία, την περίπτωση έγχυσης πληροφορίας (Injection).
Επικοινωνήστε μαζί μας για να συζητήσουμε πώς μπορεί το διαδικτυακού λογισμικό σας να γίνει ασφαλέστερο προστατεύοντας την επιχείρησή και τους πελάτες σας.