Τα IDOR είναι κοινές, δυνητικά καταστροφικές ευπάθειες που προκύπτουν από παραβιασμένο έλεγχο πρόσβασης σε web εφαρμογές.
Τα σφάλματα IDOR επιτρέπουν σε έναν εισβολέα να αλληλεπιδράσει κακόβουλα με μια web εφαρμογή χειραγωγώντας μια “άμεση αναφορά αντικειμένου“, όπως ένα κλειδί βάσης δεδομένων, μια παράμετρος ερωτήματος ή ένα όνομα αρχείου.
Καθώς μαθαίνουμε περισσότερα σε αυτό το άρθρο, θα απαντήσουμε σε βασικές ερωτήσεις όπως: “Τι είναι το IDOR;”, “Πώς μπορώ να βρω μια ευπάθεια IDOR;” και “Τι μπορώ να κάνω για να προστατευτώ από μια ευπάθεια IDOR;”.
Πώς λειτουργεί μια ευπάθεια IDOR
Για να κατανοήσετε καλύτερα πώς ένας επιτιθέμενος μπορεί να εκμεταλλευτεί μια ευπάθεια IDOR, ας ρίξουμε μια ματιά σε ένα παράδειγμα μιας αληθινής ιστορίας. Ένας φοιτητής σε ένα πανεπιστήμιο είχε πρόσβαση στα αρχεία άλλων φοιτητών απλώς αλλάζοντας ένα τμήμα της διεύθυνσης στο πρόγραμμα περιήγησής του.
Συνδέθηκε στον λογαριασμό και παρατήρησε ότι η εφαρμογή χρησιμοποιούσε τον κωδικό ως αναγνωριστικό για να ανακτήσει το πρόγραμμα μαθημάτων, τους βαθμούς και άλλες προσωπικές πληροφορίες. Η διεύθυνση URL έμοιαζε κάπως έτσι:
https://stateuniversity.example/GetStudentRecords?ID=00123456789
Τι θα γινόταν όμως αν απλά αντικαθιστούσε το τμήμα “ID=00123456789” της διεύθυνσης URL με το αναγνωριστικό ενός άλλου φοιτητή; Το δοκίμασε και το σύστημα του έδειξε τα αρχεία του άλλου φοιτητή.
Η επανάληψη αυτής της διαδικασίας αποκάλυψε ότι ήταν αρκετά απλό να αντλήσει τα αρχεία οποιουδήποτε φοιτητή ή υπαλλήλου του πανεπιστημίου, αρκεί να ήξερε (ή να μπορούσε να μαντέψει) το αναγνωριστικό του φοιτητή ή του υπαλλήλου. Δεδομένων των ευαίσθητων δεδομένων που εκτίθεντο, ανέφερε αμέσως την ευπάθεια στο πανεπιστήμιο.
Πρώτον, η εφαρμογή προφανώς δεν περιελάμβανε ελέγχους εξουσιοδότησης για να δει αν έπρεπε να έχει κάποιος πρόσβαση στα αρχεία που ζητάει (“ανασφαλής” αναφορά).
Δεύτερον, το πανεπιστήμιο σχεδίασε την εφαρμογή του, βασίζοντας την αναζήτηση των εγγραφών από την βάση δεδομένων, αποκλειστικά στο αναγνωριστικό του φοιτητή/εργαζόμενου (“άμεση αναφορά αντικειμένου”).
Τέλος, τα αναγνωριστικά παρατίθενται στη γραμμή διευθύνσεων σε μια εύκολα αναγνωρίσιμη μορφή, καθιστώντας τον χειρισμό τους απλό ακόμη και για έναν αρχάριο στην κυβερνοασφάλεια.
Τέσσερις κοινοί τύποι IDOR
Στις μέρες μας, τα αναγνωριστικά βρίσκονται συχνότερα σε επικεφαλίδες ή σε API, παρά στη γραμμή διευθύνσεων ενός χρήστη. Ωστόσο, η δυναμική φύση των περισσότερων ιστότοπων σημαίνει ότι τα αναγνωριστικά και οι παράμετροι εξακολουθούν να χρησιμοποιούνται σε μεγάλο βαθμό με τη μία ή την άλλη μορφή. Τα αναγνωριστικά μπορεί να περιλαμβάνουν:
- Database keys
- Query parameters
- User or session IDs
- Filenames
Πώς να εντοπίσετε τις ευπάθειες IDOR
Οι ευπάθειες IDOR είναι συχνά απλές στην εκμετάλλευση, αλλά μπορεί να είναι δύσκολο να εντοπιστούν από τους προγραμματιστές. Τα εργαλεία και οι τεχνικές όπως η ανάλυση κώδικα και η αυτοματοποιημένη σάρωση δεν είναι τόσο καλά στον εντοπισμό σφαλμάτων IDOR, όσο πολλά άλλα κοινά ζητήματα ασφαλείας, πράγμα που σημαίνει ότι ο εντοπισμός αυτών των ευπαθειών μπορεί να απαιτεί χειροκίνητες δοκιμές ασφαλείας.
Ορισμένοι τρόποι εντοπισμού ευπαθειών περιλαμβάνουν:
- Εκτέλεση βασικών δοκιμών με χρήση των ενσωματωμένων εργαλείων ανάπτυξης σε ένα πρόγραμμα περιήγησης ιστού
- Χρήση ενός εργαλείου, όπως το Burp Suite ή το Open Web Application Security Project Zed Attack Proxy (OWASP ZAP) για την αύξηση της αποτελεσματικότητας των χειροκίνητων δοκιμών.
- Συμμετοχή σε πρόγραμμα vulnerability disclosure
- Πρόσληψη εξωτερικής εταιρείας δοκιμών διείσδυσης για την εξέταση κρίσιμων διαδικτυακών εφαρμογών
Τέσσερις τύποι επιθέσεων IDOR
Εννοιολογικά, οι περισσότερες επιθέσεις που εκμεταλλεύονται το IDOR λειτουργούν με παρόμοιο τρόπο, αλλά υπάρχουν μικρές αποχρώσεις στις οποίες το αναγνωριστικό εκτίθεται και/ή χειραγωγείται από τους χάκερ:
1. URL tampering
Η αλλοίωση του URL είναι ο απλούστερος τρόπος εκμετάλλευσης μιας ευπάθειας IDOR και συχνά απαιτεί ελάχιστη ή καθόλου τεχνική εμπειρία. Σε αυτόν τον τύπο επίθεσης, μπορούμε απλώς να αλλάξουμε την τιμή μιας παραμέτρου στη γραμμή διευθύνσεων του προγράμματος περιήγησής μας.
Στο παράδειγμά μας για το κολέγιο, άλλαξε το αναγνωριστικό του φοιτητή με αυτό των άλλων φοιτητών, καθηγητών και υπαλλήλων του πανεπιστημίου. Μπορούν επίσης να χρησιμοποιηθούν εργαλεία για την τροποποίηση της αίτησης HTTP, αλλά το τελικό αποτέλεσμα είναι το ίδιο: ο διακομιστής παραχωρεί κάποιο είδος ακατάλληλης πρόσβασης σε έναν επιτιθέμενο.
Και αν έχετε το πλεονέκτημα να γνωρίζετε εκ των προτέρων μερικά από αυτά τα ID τότε τα πράγματα είναι εξαιρετικά απλά. Ένας πραγματικός επιτιθέμενος πιθανότατα θα ξόδευε χρόνο απαριθμώντας διαφορετικές τιμές και προσπαθώντας να διακρίνει ένα προβλέψιμο μοτίβο.
Παρακάτω: Μια απλή επίθεση αλλοίωσης URL μπορεί να συνίσταται στην αλλαγή ενός μόνο αναγνωριστικού παραμέτρου σε μια γραμμή διευθύνσεων.
2. Body manipulation
Το body manipulation μοιάζει πολύ με την αλλοίωση της διεύθυνσης URL, με τη διαφορά ότι ο επιτιθέμενος τροποποιεί μία ή περισσότερες τιμές στο σώμα μίας φόρμας αντί για τη διεύθυνση URL. Αυτό μπορεί να σημαίνει αλλαγή των τιμών των κουμπιών επιλογής, των κουτιών ελέγχου ή άλλων στοιχείων της φόρμας. Μπορεί επίσης να είναι δυνατή η αλλαγή των κρυφών τιμών της φόρμας.
Ίσως μια επαφή έχει μια κρυφή τιμή φόρμας που μεταβιβάζει το αναγνωριστικό χρήστη για τον τρέχοντα συνδεδεμένο λογαριασμό. Αν μπορούμε να αλλάξουμε αυτή την κρυφή τιμή πριν από την υποβολή της φόρμας, μπορούμε να κάνουμε το αίτημά μας να φαίνεται ότι προέρχεται από διαφορετικό χρήστη.
3. Cookie ή JSON ID manipulation
Τα cookies και το JavaScript Object Notation (JSON) χρησιμοποιούνται και τα δύο ευρέως παρασκηνιακά για την αποθήκευση και την ανταλλαγή δεδομένων μεταξύ του πελάτη και του διακομιστή, βοηθώντας να γίνουν οι ιστοσελίδες πιο δυναμικές.
Όταν συνδεόμαστε σε έναν ιστότοπο, για παράδειγμα, ο διακομιστής μπορεί να αποθηκεύσει μια τιμή αναγνωριστικού χρήστη ή συνεδρίας μέσα σε ένα cookie ή ένα αντικείμενο JSON. Εάν η εφαρμογή περιέχει μια ευπάθεια IDOR, ένας εισβολέας θα μπορούσε να αλλάξει αυτές τις τιμές.
4. Path traversal
Το path traversal, που ονομάζεται επίσης directory traversal, είναι ένας μοναδικός τύπος ευπάθειας IDOR, τον οποίο ένας εισβολέας αξιοποιεί για να αποκτήσει πρόσβαση ή να χειριστεί αρχεία ή φακέλους στον διακομιστή που εκτελεί την web εφαρμογή.
Πρόκειται για ένα επίπεδο βαθύτερο από άλλους τύπους επιθέσεων IDOR, επειδή επιτρέπει την άμεση πρόσβαση σε πόρους του συστήματος αρχείων αντί σε εγγραφές βάσεων δεδομένων. Το Path traversal μπορεί να επιτρέψει σε έναν εισβολέα να αποκτήσει πρόσβαση σε αρχεία ρυθμίσεων, να ανακαλύψει διαπιστευτήρια χρήστη ή ακόμη και να αποκτήσει ένα πλήρως λειτουργικό shell στο στόχο.
Πώς μια ευπάθεια IDOR επηρεάζει τα δεδομένα
Οι ευπάθειες IDOR μπορεί να είναι απλές στην εκμετάλλευση, αλλά οι επιπτώσεις αυτού του τύπου επίθεσης είναι δυνητικά καταστροφικές. Παρακάτω παρατίθενται μερικοί μόνο τρόποι με τους οποίους ένα IDOR μπορεί να επηρεάσει την εμπιστευτικότητα, την ακεραιότητα και τη διαθεσιμότητα των δεδομένων του οργανισμού σας:
- Εμπιστευτικότητα – Όπως είδαμε στο παράδειγμα με το πανεπιστήμιο, μια επιτυχημένη επίθεση IDOR δίνει στον επιτιθέμενο πρόσβαση σε κάτι που δεν θα έπρεπε να μπορεί να δει. Αυτό θα μπορούσε να είναι οτιδήποτε, από έναν κωδικό έκπτωσης για τους συχνούς αγοραστές σε ένα ψηφιακό κατάστημα μέχρι ευαίσθητες προσωπικές πληροφορίες για την υγεία ή εμπορικά μυστικά.
- Ακεραιότητα – Σε ορισμένες περιπτώσεις, ένας εισβολέας μπορεί να είναι σε θέση να χρησιμοποιήσει μια ευπάθεια IDOR για να τροποποιήσει δεδομένα. Συνήθως, αυτοί οι τύποι επιθέσεων χειρίζονται παραμέτρους σε ένα αίτημα HTTP POST. Το 2020, ένας ερευνητής ασφάλειας ανακάλυψε μια ευπάθεια IDOR που θα επέτρεπε σε έναν εισβολέα να αλλάξει τον κωδικό πρόσβασης των λογαριασμών χρηστών σε διακομιστές του Υπουργείου Άμυνας των ΗΠΑ. Οι επιτιθέμενοι μπορούν να χρησιμοποιήσουν παρόμοιες ευπάθειες για να προσθέσουν μη εξουσιοδοτημένα δεδομένα, όπως παραποιημένες οικονομικές πληροφορίες ή ενοχοποιητικά έγγραφα σε έναν ανυποψίαστο χρήστη.
- Διαθεσιμότητα – Το IDOR μπορεί επίσης να χρησιμοποιηθεί καταχρηστικά για να επηρεάσει τη διαθεσιμότητα των πόρων. Φανταστείτε μια συνάρτηση σε μια εφαρμογή PHP που διαγράφει έγγραφα με βάση το όνομα του αρχείου. Χωρίς κατάλληλους ελέγχους εξουσιοδότησης, ένας εισβολέας μπορεί να είναι σε θέση να αλλάξει το όνομα αρχείου και να διαγράψει έγγραφα στα οποία δεν έχει καν πρόσβαση!
Τέσσερις συμβουλές για την πρόληψη των ευπαθειών IDOR
Οι ευπάθειες IDOR μπορούν να αποτραπούν με την αποφυγή άμεσων αναφορών αντικειμένων (direct object reference), την εφαρμογή επικύρωσης της εισόδου του χρήστη και την εφαρμογή παγκοσμίως μοναδικών αναγνωριστικών (γνωστών ως GUID) ή τυχαίων αναγνωριστικών. Αν και δεν υπάρχει ασφαλής λύση όσον αφορά την πρόληψη των ευπαθειών IDOR, ορισμένα από τα παρακάτω βήματα μπορούν να βοηθήσουν.
1. Εφαρμόστε τον κατάλληλο έλεγχο πρόσβασης και τη διαχείριση συνόδου
Η OWASP, η οποία επινόησε τον όρο “Insecure Direct Object Reference” (ανασφαλής άμεση αναφορά αντικειμένου), θεωρεί ότι το IDOR είναι πάνω απ’ όλα ένα ζήτημα ελέγχου πρόσβασης. Οι κατάλληλοι έλεγχοι πρόσβασης και τα χαρακτηριστικά διαχείρισης των sessions θα πρέπει να αποτρέπουν έναν κακόβουλο χρήστη από το να μπορεί να έχει πρόσβαση ή να χειρίζεται δεδομένα, ακόμη και όταν χρησιμοποιούνται εύκολα αριθμητικά αναγνωριστικά. Τα cheat sheets του OWASP σχετικά με την εξουσιοδότηση και τον έλεγχο ταυτότητας μπορεί να είναι χρήσιμα για να τα μελετήσετε.
2. Αποφύγετε τις άμεσες αναφορές αντικειμένων
Πέρα από τα ζητήματα ελέγχου πρόσβασης, η χρήση άμεσων αναφορών αντικειμένων (direct object references) στην εφαρμογή σας θεωρείται συχνά μια πρόχειρη πρακτική κωδικοποίησης. Αυτό ισχύει ιδιαίτερα όταν πρόκειται για ευαίσθητα δεδομένα, όπως ταυτότητες φοιτητών/εργαζομένων, αριθμούς λογαριασμών κ.λ.π. Οι έμμεσες αναφορές αντικειμένων, συχνά με τη μορφή είτε reference maps είτε hashes, αντιμετωπίζουν τα τρωτά σημεία IDOR, με την απόκρυψη του πραγματικού αναγνωριστικού, το οποίο παραμένει κρυφό στην πλευρά του διακομιστή. Εάν χρησιμοποιούνται hashes, φροντίστε να συμπεριλάβετε ένα ισχυρό και μοναδικό identifier, καθώς οι βασικοί αλγόριθμοι hashes όπως ο MD5 είναι εύκολο να σπάσουν.
3. Χρησιμοποιήστε GUIDs ή τυχαία αναγνωριστικά
Σε εφαρμογές που χρησιμοποιούν επαναληπτικά ή διαδοχικά αναγνωριστικά ή τιμές παραμέτρων, η απαρίθμηση μιας ανασφαλούς ευπάθειας άμεσης αναφοράς αντικειμένου είναι πανεύκολη. Αν παρατηρήσουμε ότι το αναγνωριστικό χρήστη μοιάζει με κάτι σαν 0001, για παράδειγμα, μπορούμε να κάνουμε μια τεκμηριωμένη εικασία ότι υπάρχει και ο χρήστης 0002. Η σύγχρονη υπολογιστική ισχύς και οι τεχνικές αυτοματοποίησης καθιστούν αρκετά εύκολο να δοκιμάσουμε στη συνέχεια κάθε πιθανή τιμή από 0000 έως 9999 μέχρι να βρούμε τον χρήστη που ψάχνουμε.
Ούτε τα GUID ούτε τα καθολικά μοναδικά αναγνωριστικά αφαιρούν την υποκείμενη ευπάθεια, αλλά καθιστούν πολύ πιο δύσκολη την απαρίθμηση και την εκμετάλλευση. Ένα αναγνωριστικό όπως το f492325c-ae75-4335-a2a6-1a716b723f2a είναι πολύ πιο δύσκολο να αποκρυπτογραφηθεί από κάτι λιγότερο περίπλοκο.
4. Επικύρωση της εισόδου του χρήστη
Η επικύρωση της εισόδου του χρήστη μπορεί να συμβάλει στον μετριασμό ενός μεγάλου αριθμού ζητημάτων ασφαλείας, συμπεριλαμβανομένου του IDOR. Η απαρίθμηση αναγνωριστικών γίνεται πολύ πιο δύσκολη αν επικυρώνουμε αυστηρά τις παραμέτρους που παρέχονται από τον χρήστη για το σωστό μήκος και τη σωστή μορφή. Η επικύρωση μπορεί να λάβει χώρα είτε στην πλευρά του πελάτη είτε στην πλευρά του διακομιστή, ανάλογα με το τι είναι καταλληλότερο.
IDOR vulnerabilities: Μια ακόμη απειλή που πρέπει να μας ανησυχεί
Τα IDOR είναι μόνο μια πιθανή απειλή για την ασφάλεια των δεδομένων του οργανισμού σας, και μια απειλή που μπορεί δυστυχώς να απαιτεί πολλή χειρωνακτική προσπάθεια για τον εντοπισμό και την αποκατάσταση.
Υπάρχουν πολλά εργαλεία που μπορούν να σας βοηθήσουν να αυτοματοποιήσετε την προστασία της ιδιωτικής σας ζωής και να ενισχύσετε την προστασία από απειλές που καταναλώνουν πόρους, όπως το ransomware, εξοικονομώντας χρόνο για τις πιο κρίσιμες εργασίες σας.