Συνεχίζοντας τον κύκλο άρθρων σχετικά με την ασφάλεια σε δικτυακά περιβάλλοντα σε συνεργασία με τον Παναγιώτη Καλαντζή στο άρθρο αυτό εξετάζουμε την τέταρτη συνηθέστερη αδυναμία, την επισφαλή άμεση αναφορά σε οντότητες της εφαρμογής. Η προκείμενη αδυναμία παρουσιάζεται όταν η λογική της εφαρμογής απαιτεί διαφορετικά δικαιώματα πρόσβασης στα δεδομένα της εφαρμογής ανά χρήστη. Έτσι στο γενικευμένο σενάριο της αδυναμίας ένας χρήστης που ήδη έχει διαπιστευτεί παραποιεί μια μεταβλητή που αναφέρεται άμεσα σε οντότητα του συστήματος (για την οποία δεν έχει δικαιώματα πρόσβασης) και λόγω ελλιπούς ασφάλειας αποκτά πρόσβαση στην οντότητα. Για την διαπίστωση της ύπαρξης θέματος επισφαλούς άμεσης αναφοράς σε οντότητες της εφαρμογής απαιτείται η επιβεβαίωση ύπαρξης ασφαλούς πρόσβασης σε ΌΛΕΣ τις αναφορές σε οντότητες, που γίνεται συνήθως εξετάζονται τα εξής:
- Για περιπτώσεις άμεσης αναφοράς σε ευαίσθητα δεδομένα, απαιτείται η επιβεβαίωση πως η εφαρμογή απορρίπτει χρήστες που δεν έχουν τα απαραίτητα δικαιώματα,
- Για περιπτώσεις έμμεσης αναφοράς σε ευαίσθητα δεδομένα, απαιτείται η επιβεβαίωση πως η μετάφραση της εφαρμογής σε άμεση αναφορά απορρίπτει τιμές για τις οποίες ο αιτών δεν έχει τα απαραίτητα δικαιώματα.
Σκεφτείτε την περίπτωση όπου η σελίδα πρόσβασης σε ευαίσθητα δεδομένα όπως τα στοιχεία πιστωτικής κάρτας εκτελεί τον ακόλουθο php κώδικα
<?
$user_id = $_GET[‘user_id’];
$query = “SELECT * FROM credit_card WHERE id = ‘”.$user_id.”’;”
//return mysql results
?>
και ο επιτιθέμενος κατόπιν της διαπίστευσής του, απλά αλλάζει την τιμή της μεταβλητής user_id στο URL
http://www.myapp.com/get_user_cc_Details.php?user_id=23242
αποκτώντας πρόσβαση στην πληροφορία του χρήστη με id διάφορο του δικού του (για το οποίο δεν θα έπρεπε να έχει πρόσβαση!). Τα συνήθη αποτελέσματα της εκμετάλλευσης της αδυναμίας αυτής είναι πως ο επιτιθέμενος μπορεί να προσπελάσει δεδομένα για τα οποία δεν έχει τα αντίστοιχα δικαιώματα! Ακολούθως, σε επιχειρηματικό επίπεδο πρέπει κανείς να θεωρεί τις συνέπειες των επιθέσεων αυτού του τύπου ως πολύ σοβαρές καθώς τα εκτεθειμένα δεδομένα είναι ευαίσθητα και η έκθεσή τους θίγει τους αντίστοιχους χρήστες αλλά και στην επιχειρηματική υπόληψη όσο αφορά την ασφάλεια των δεδομένων της εφαρμογής. Για την αντιμετώπιση της εν λόγω αδυναμίας προτείνονται τουλάχιστον τα εξής:
- Χρήση ανά χρήστη ή ανά συνεδρία χρήστη αναφορών σε οντότητες της εφαρμογής. Με τη μέθοδο αυτή εμποδίζονται οι επιτιθέμενοι με λ.χ. χρήση αντί των πραγματικών id των οντοτήτων της βάσης, μεταφράσεων (έμμεσες αναφορές) από την εφαρμογή με σειριακή ή εξειδικευμένη αρίθμηση,
- Επιβεβαίωση των δικαιωμάτων χρηστών σχετικά με την πρόσβαση στις οντότητες.
Στο επόμενο άρθρο θα δούμε την αδυναμία που προκαλείται από την ανεπαρκή επικύρωση δεδομένων εισόδου χρήστη (Cross-Site Scripting – XSS). Επικοινωνήστε μαζί μας για να συζητήσουμε πώς μπορεί το διαδικτυακού λογισμικό σας να γίνει ασφαλέστερο προστατεύοντας την επιχείρησή και τους πελάτες σας.