Ο περιορισμός των δικαιωμάτων βάσης δεδομένων βοηθά στην πρόληψη των επιθέσεων SQL INISECTION (SQLI) κυρίως με τη μείωση της πιθανής βλάβης που ένας εισβολέας μπορεί να προκαλέσει εάν καταφέρνουν να εκμεταλλευτούν μια ευπάθεια. Αυτή η προσέγγιση βασίζεται στην αρχή του ελάχιστου προνομίου, που σημαίνει ότι χορήγησε στους χρήστες ή τους λογαριασμούς εφαρμογών μόνο τα ελάχιστα δικαιώματα που απαιτούνται για την εκτέλεση των καθηκόντων τους και όχι περισσότερο.
Ακολουθεί μια λεπτομερής εξήγηση για το πώς τα περιοριστικά δικαιώματα βοηθούν:
** 1. Περιορίζει το εύρος των ενεργειών που μπορεί να εκτελέσει ένας εισβολέας
Εάν ένας λογαριασμός εφαρμογής ή χρήστη συνδεδεμένο στη βάση δεδομένων έχει μόνο πρόσβαση μόνο σε ανάγνωση σε συγκεκριμένους πίνακες, ένας εισβολέας που εκμεταλλεύεται την SQL ένεση μέσω αυτού του λογαριασμού δεν μπορεί να τροποποιήσει, να διαγράψει ή να εισαγάγει δεδομένα. Αυτό το περιορισμό περιορίζει την "ακτίνα έκρηξης" της επίθεσης, την πρόληψη της διαφθοράς των δεδομένων ή των μη εξουσιοδοτημένων αλλαγών [3] [9]. Για παράδειγμα, εάν ο λογαριασμός χρειάζεται μόνο να εκτελέσει επιλεγμένα ερωτήματα, δεν θα έπρεπε να έχει εισαγωγή, ενημέρωση, διαγραφή ή διοικητικά προνόμια.
** 2. Αποτρέπει την μη εξουσιοδοτημένη πρόσβαση δεδομένων πέρα από την αναγκαιότητα
Με τον περιορισμό των δικαιωμάτων βάσης δεδομένων σε μόνο τους απαραίτητους πίνακες και λειτουργίες, οι επιτιθέμενοι δεν έχουν πρόσβαση σε ευαίσθητα δεδομένα εκτός του πεδίου εφαρμογής των νόμιμων αναγκών της εφαρμογής. Αυτό σημαίνει ότι ακόμη και αν η ένεση SQL είναι επιτυχής, η ικανότητα του εισβολέα να εξαχθεί ή να χειριστεί δεδομένα περιορίζεται σε αυτό που μπορεί να έχει πρόσβαση ο συμβιβασμένος λογαριασμός [1] [2] [7].
** 3. Περιορίζει την εκμετάλλευση των επικίνδυνων χαρακτηριστικών βάσης δεδομένων
Ορισμένες λειτουργίες βάσης δεδομένων, όπως η εκτέλεση εντολών του λειτουργικού συστήματος ή η εκτέλεση αποθηκευμένων διαδικασιών απεριόριστων, μπορούν να αξιοποιηθούν εάν τα δικαιώματα είναι πολύ ευρεία. Ο περιορισμός των δικαιωμάτων απενεργοποιεί ή περιορίζει την πρόσβαση σε τέτοια χαρακτηριστικά, μειώνοντας την επιφάνεια επίθεσης για έγχυση SQL και συναφείς εκμεταλλεύσεις [2] [9].
** 4. Μειώνει τον κίνδυνο κλιμάκωσης προνομίων
Εάν ο χρήστης της βάσης δεδομένων εκτελείται με υψηλά προνόμια (π.χ. admin ή dba ρόλους), μια επιτυχημένη έγχυση SQL μπορεί να οδηγήσει σε πλήρη έλεγχο της βάσης δεδομένων, συμπεριλαμβανομένης της δημιουργίας ή της πτώσης των πινάκων ή ακόμη και της εκτέλεσης εντολών στο διακομιστή. Ο περιορισμός των δικαιωμάτων εμποδίζει τους επιτιθέμενους να κλιμακώνουν την πρόσβασή τους πέρα από αυτό που απαιτεί νόμιμα η εφαρμογή [1] [6] [9].
** 5. Υποστηρίζει την άμυνα σε βάθος
Ενώ περιορίζουν μόνο τα δικαιώματα δεν εμποδίζουν την έγχυση SQL, είναι ένα κρίσιμο στρώμα άμυνας που λειτουργεί παράλληλα με την επικύρωση των εισροών, τα παραμετροποιημένα ερωτήματα, τις αποθηκευμένες διαδικασίες και τα τείχη προστασίας εφαρμογών ιστού. Αυτή η στρωμένη προσέγγιση εξασφαλίζει ότι ακόμη και αν αποτύχει ένας έλεγχος, άλλοι βοηθούν στη συγκράτηση της επίθεσης [3] [7].
Συνοπτικά, ο περιορισμός των δικαιωμάτων βάσης δεδομένων μειώνει τον πιθανό αντίκτυπο της έγχυσης SQL, εξασφαλίζοντας ότι οι συμβιβασμένοι λογαριασμοί δεν μπορούν να εκτελούν επιβλαβείς ενέργειες πέρα από το προβλεπόμενο πεδίο εφαρμογής τους. Αυτό το περιορισμό συμβάλλει στην πρόληψη της απώλειας δεδομένων, της μη εξουσιοδοτημένης τροποποίησης των δεδομένων και της κλιμάκωσης των προνομίων, καθιστώντας τις επιθέσεις έγχυσης SQL λιγότερο επιζήμια και ευκολότερη διαχείριση [1] [2] [3] [6] [9].
Αναφορές:
[1] https://cheatsheetseries.owasp.org/cheatsheets/sql_inicefice_prevention_cheat_sheet.html
[2] https://www.esecurityplanet.com/threats/how-to-prevent-sql-injise-attacks/
[3] https://www.legitsecurity.
[4] https://users.soe.ucsc.edu/~eugusti/archive/365-spring16/365-files/lectures/365-lec14-security.pdf
[5] https://www.reddit.com/r/sql/comments/1c5m63s/sql_iniceiction_prevention_help/
[6] https://security.stackexchange.com/questions/90247/sql-injection-attack-why-not-just-adjust-permissions
[7] https://www.cloudflare.com/learning/security/threats/how-to-prevent-sql-injection/
[8] https://stackoverflow.com/questions/1263218/if-my-database-user-is-read-only-hy-do-i-need-worry-about-sql-ένεση
[9] https://www.enterprisedb.com/blog/protecting-against-sql-sinception