Αναγνώστες σαν εσάς βοηθούν στην υποστήριξη του MUO. Όταν κάνετε μια αγορά χρησιμοποιώντας συνδέσμους στον ιστότοπό μας, ενδέχεται να κερδίσουμε μια προμήθεια θυγατρικών. Διαβάστε περισσότερα.

Αν υπάρχει κάτι που αγαπούν οι εγκληματίες του κυβερνοχώρου, αυτό είναι τα δεδομένα. Τα κλεμμένα δεδομένα είναι εξαιρετικά πολύτιμα σε παράνομες αγορές και η πρόσβαση σε ιδιωτικές βάσεις δεδομένων μπορεί να είναι ένας πολύ καλός τρόπος για τους κακόβουλους παράγοντες να αποκομίσουν κέρδος από τις επιχειρήσεις τους. Ένας τρόπος πρόσβασης στα προσωπικά δεδομένα είναι μέσω μιας ένεσης SQL. Τι ακριβώς είναι όμως μια ένεση SQL, πώς λειτουργεί και μπορεί να αποτραπεί μια τέτοια επίθεση;

Τι είναι η ένεση SQL;

Τα προγράμματα λογισμικού βασίζονται στον κώδικα για να λειτουργήσουν. Ο κώδικας είναι επίσης η γλώσσα που χρησιμοποιούν οι μηχανές για τη διεξαγωγή λειτουργιών και μπορεί να έχει πολλές μορφές (Python, JavaScript, C++, κ.λπ.). Συχνά, οι εγκληματίες του κυβερνοχώρου μπορούν να επιτεθούν στα θύματα μέσω κώδικα, και οι ενέσεις SQL (ή SQLis) δεν διαφέρουν. Αυτά επιτρέπουν σε κακόβουλους φορείς να "εισάγουν" επιβλαβή κώδικα σε μια δήλωση SQL.

instagram viewer

Ας δούμε πρώτα τι σημαίνει SQL.

Η SQL σημαίνει δομημένη γλώσσα ερωτημάτων. Αυτό είναι ένα άλλο είδος γλώσσας προγραμματισμού χρησιμοποιείται ειδικά όταν ασχολείται με βάσεις δεδομένων. Αναπτύχθηκε τη δεκαετία του 1970 από την IBM, η SQL μπορεί να χειριστεί, να αποθηκεύσει και να ανακτήσει πληροφορίες βάσης δεδομένων. Πολλά συστήματα επικοινωνίας βάσεων δεδομένων σε όλο τον κόσμο χρησιμοποιούν SQL, επομένως δεν αποτελεί έκπληξη το γεγονός ότι οι φορείς απειλών έχουν επινοήσει τρόπους κατάχρησης για να στοχεύσουν βάσεις δεδομένων.

Οι δηλώσεις SQL αποτελούν βασικό μέρος της επικοινωνίας της βάσης δεδομένων. Μια πρόταση SQL είναι μια εντολή που έρχεται σε πολλές διαφορετικές μορφές. Κάποιοι αλλάζουν δεδομένα, κάποιοι τα ανακτούν ή τα διαγράφουν και κάποια άλλα μπορούν να αλλάξουν τη δομή της ίδιας της βάσης δεδομένων. Όταν συμβαίνει μια ένεση SQL, ο κακόβουλος κώδικας εισάγεται σε μια πρόταση SQL.

Φυσικά, ένας ιστότοπος ή μια εφαρμογή πρέπει να χρησιμοποιεί τη γλώσσα προγραμματισμού SQL για να είναι δυνατή η εισαγωγή SQL. Πώς όμως λειτουργεί αυτό το διάνυσμα επίθεσης;

Ας υποθέσουμε ότι έχετε μια κανονική γραμμή κώδικα που χρησιμοποιείται από μια εφαρμογή. Όταν ένας κυβερνοεγκληματίας εισάγει μια κακόβουλη ένεση SQL, προστίθεται μια γραμμή κώδικα που μπορεί να παρεμβαίνει στα ερωτήματα που στέλνει η ίδια η εφαρμογή στη βάση δεδομένων της. Με αυτόν τον τρόπο, η βάση δεδομένων μπορεί να αξιοποιηθεί με τρόπο που επιτρέπει στον παράγοντα απειλής να προβάλλει δεδομένα στα οποία διαφορετικά δεν θα είχε πρόσβαση.

Από εδώ, ο κυβερνοεγκληματίας θα μπορούσε να κλέψει δεδομένα για να τα εκμεταλλευτεί άμεσα ή πουλήστε το στο dark web ή αλλού. Θα μπορούσαν επίσης να αλλάξουν, να προσθέσουν ή να διαγράψουν δεδομένα από τη στοχευμένη βάση δεδομένων. Ανάλογα με τον βαθμό της επίθεσης SQL injection, θα μπορούσε να γίνει μεγάλη ζημιά. Εάν γίνει πρόσβαση στα στοιχεία πληρωμής, τους αριθμούς κοινωνικής ασφάλισης ή άλλα είδη ιδιωτικών δεδομένων, πολλά άτομα ενδέχεται να κινδυνεύσουν να υποστούν εκμετάλλευση.

Από την άλλη πλευρά, εάν ο εισβολέας καταφέρει να αλλάξει σημαντικά τη βάση δεδομένων, μεγάλα τμήματα δεδομένων θα μπορούσαν να χαθούν οριστικά. Συνολικά, οι ενέσεις SQL μπορούν να καταστρέψουν ολόκληρες βάσεις δεδομένων μέσω μιας μόνο επίθεσης. Ενώ υπάρχουν από το 1998, εξακολουθούν να είναι επίκαιρα και επικίνδυνα στις μέρες μας.

Όπως διαπιστώθηκε από το Άνοιγμα έργου ασφάλειας εφαρμογών Ιστού (OWASP), 274.000 περιπτώσεις ενέσεων SQL εντοπίστηκαν κατά τη δοκιμή εφαρμογών για την παρουσία μιας τέτοιας επίθεσης το 2021.

Οι τύποι της ένεσης SQL

Υπάρχουν μερικά διαφορετικά είδη έγχυσης SQL, με τα τρία κύρια να είναι τα blind, in-band και out-of-band injection.

Μια τυφλή (ή συμπερασματική) ένεση SQL λαμβάνει χώρα όταν η εφαρμογή ή η τοποθεσία δέχεται επίθεση από το ένεση, αλλά οι απαντήσεις HTTP (Πρωτόκολλο μεταφοράς υπερκειμένου) που παρέχονται δεν περιέχουν το αποτέλεσμα του Ερώτημα SQL. Με άλλα λόγια, κανένα στοιχείο από τη βάση δεδομένων που δέχεται επίθεση δεν δίνεται στον κυβερνοεγκληματία. Λοιπόν, τι νόημα έχει αυτό;

Χρησιμοποιώντας μια τυφλή ένεση SQL, ένας εισβολέας στέλνει δεδομένα στον διακομιστή-στόχο και στη συνέχεια μπορεί να διακρίνει ορισμένα πράγματα σχετικά με μια βάση δεδομένων μέσω της φύσης της ίδιας της απόκρισης HTTP. Επιπλέον, οι παράγοντες που σχετίζονται με την απόκριση HTTP μπορούν να βοηθήσουν τον εισβολέα να δημιουργήσει μια άλλη, πιο αποτελεσματική ένεση SQL για πρόσβαση στη βάση δεδομένων.

Υπάρχουν δύο βασικοί τύποι τυφλής έγχυσης SQL, γνωστοί ως βάσει χρόνου και boolean. Αυτές οι δύο παραλλαγές είναι αρκετά παρόμοιες στη φύση τους. Τόσο η δυαδική όσο και η έγχυση SQL που βασίζεται στον χρόνο στέλνει μια σειρά από ερωτήσεις ναι ή όχι, αν και οι τελευταίες θα απαιτήσουν από τη βάση δεδομένων να περιμένει λίγο πριν απαντήσει στα ερωτήματα.

Στη συνέχεια, υπάρχουν ενέσεις SQL εντός ζώνης. Οι ενέσεις SQL εντός ζώνης επιτρέπουν στον χειριστή να πραγματοποιήσει την επίθεση και να πάρει το επιθυμητό αποτέλεσμα χρησιμοποιώντας το ίδιο κανάλι. Οι ενέσεις SQL εντός ζώνης είναι οι πιο συχνά χρησιμοποιούμενες, απλώς και μόνο επειδή είναι οι πιο εύκολες στην εκτέλεση λόγω του γεγονότος ότι απαιτούν μόνο ένα κανάλι.

Τέλος, έχετε μια ένεση SQL εκτός ζώνης. Αυτή είναι ουσιαστικά η εναλλακτική έκδοση μιας ένεσης SQL εντός ζώνης, όπου ο εισβολέας δεν μπορεί να πραγματοποιήσει την επίθεση συνολικά χρησιμοποιώντας ένα μόνο κανάλι. Εναλλακτικά, μια επίθεση μπορεί να χρειαστεί να καταφύγει σε μια ένεση SQL εκτός ζώνης εάν ο διακομιστής στόχος απλώς δεν είναι αρκετά γρήγορος για να παρέχει αποτελέσματα.

Αυτοί οι παράγοντες καθιστούν τη διαδικασία λίγο πιο δύσκολη, πράγμα που σημαίνει ότι πρέπει να βασίζεται σε ορισμένα χαρακτηριστικά για να είναι ενεργή στη στοχευμένη βάση δεδομένων για επιτυχία. Για παράδειγμα, η πλατφόρμα που δέχεται επίθεση πρέπει να έχει έλλειψη απολύμανσης εισόδου. Εξαιτίας αυτού, οι ενέσεις SQL εντός ζώνης είναι πολύ πιο συνηθισμένες από τις ενέσεις SQL εκτός ζώνης. Αλλά εξακολουθούν να συμβαίνουν.

Μπορούν να αποφευχθούν οι ενέσεις SQL;

Οι ενέσεις SQL απασχολούν περισσότερο τις επιχειρήσεις και τους οργανισμούς παρά τα κανονικά άτομα. Αλλά υπάρχουν πράγματα που μπορούν να κάνουν αυτοί οι πιθανοί στόχοι για να μειώσουν την πιθανότητα να χτυπηθούν από μια τέτοια επίθεση.

Η απολύμανση εισόδου είναι η βασική κοινή πρακτική για την αποφυγή ενέσεων SQL. Αυτή είναι μια διαδικασία φιλτραρίσματος που σαρώνει και καθαρίζει την είσοδο επικίνδυνων χαρακτήρων. Εάν ο κώδικας SQL υποβληθεί σε επεξεργασία πριν απολυμανθεί, η πιθανότητα ένεσης SQL θα αυξηθεί φυσικά.

Επιπλέον, τα παραμετροποιημένα ερωτήματα μπορούν να σας βοηθήσουν να αποφύγετε τις ενέσεις SQL. Αυτά είναι ερωτήματα που απαιτούν τουλάχιστον μία παράμετρο για εκτέλεση. Η εφαρμογή παραμέτρων καθιστά πιο δύσκολο για τους εγκληματίες του κυβερνοχώρου να πραγματοποιήσουν επιτυχώς μια επίθεση SQL injection.

Αλλά δεν υπάρχει σίγουρος τρόπος για να αποτρέψετε μια ένεση SQL. Όπως συμβαίνει με πολλές κυβερνοεπιθέσεις, είναι σχεδόν αδύνατο να κρατήσετε τις συσκευές και τα συστήματά σας εντελώς αεροστεγή. Όταν πρόκειται για ενέσεις SQL, το καλύτερο που μπορείτε να κάνετε είναι να απολυμάνετε όλες τις εισόδους και να δημιουργήσετε παραμετροποιημένα ερωτήματα.

Οι ενέσεις SQL είναι παλιές, αλλά εξακολουθούν να αποτελούν απειλή

Ενώ οι ενέσεις SQL υπάρχουν για περισσότερα από 20 χρόνια, εξακολουθούν να αποτελούν κίνδυνο για πολλούς ιστότοπους και εφαρμογές. Επομένως, είναι καλή ιδέα να έχετε κατά νου αυτήν τη μορφή επίθεσης και να λάβετε τα απαραίτητα μέτρα για να προσπαθήσετε να την αποτρέψετε, καθώς θα μπορούσε να αποτελέσει απειλή για τις βάσεις δεδομένων σας κάποια στιγμή στο μέλλον.