Επίδραση του SQL Injection
Η έγχυση SQL (SQLi) επιτρέπει σε έναν εισβολέα να παρεμβαίνει στα ερωτήματα που κάνει μια εφαρμογή στη βάση δεδομένων [S1]. Ο κύριος αντίκτυπος περιλαμβάνει μη εξουσιοδοτημένη πρόσβαση σε ευαίσθητα δεδομένα, όπως κωδικούς πρόσβασης χρήστη, στοιχεία πιστωτικής κάρτας και προσωπικά στοιχεία [S1].
Πέρα από την κλοπή δεδομένων, οι εισβολείς μπορούν συχνά να τροποποιήσουν ή να διαγράψουν αρχεία βάσης δεδομένων, οδηγώντας σε επίμονες αλλαγές στη συμπεριφορά της εφαρμογής ή σε απώλεια δεδομένων [S1]. Σε περιπτώσεις υψηλής σοβαρότητας, το SQLi μπορεί να κλιμακωθεί για να διακυβεύσει την υποδομή του back-end, να ενεργοποιήσει επιθέσεις άρνησης υπηρεσίας ή να παρέχει μια μόνιμη κερκόπορτα στα συστήματα του οργανισμού [S1]ZXCVFIXZVIBETOKEN2.
Βασική αιτία: Μη ασφαλής χειρισμός εισόδου
Η βασική αιτία της έγχυσης SQL είναι η ακατάλληλη εξουδετέρωση ειδικών στοιχείων που χρησιμοποιούνται σε μια εντολή SQL [S2]. Αυτό συμβαίνει όταν μια εφαρμογή κατασκευάζει ερωτήματα SQL συνενώνοντας είσοδο που επηρεάζεται εξωτερικά απευθείας στη συμβολοσειρά ερωτήματος [S1][S2].
Επειδή η είσοδος δεν είναι σωστά απομονωμένη από τη δομή του ερωτήματος, ο διερμηνέας της βάσης δεδομένων μπορεί να εκτελέσει τμήματα της εισόδου χρήστη ως κώδικα SQL αντί να τα αντιμετωπίζει ως κυριολεκτικά δεδομένα [S2]. Αυτή η ευπάθεια μπορεί να εκδηλωθεί σε διάφορα μέρη ενός ερωτήματος, συμπεριλαμβανομένων των δηλώσεων SELECT, των τιμών INSERT ή των δηλώσεων UPDATE [S1].
Συγκεκριμένες Διορθώσεις και Μετριασμούς
Χρησιμοποιήστε παραμετροποιημένα ερωτήματα
Ο πιο αποτελεσματικός τρόπος για να αποτραπεί η ένεση SQL είναι η χρήση παραμετροποιημένων ερωτημάτων, γνωστών και ως προετοιμασμένων δηλώσεων [S1]. Αντί της σύνδεσης συμβολοσειρών, οι προγραμματιστές θα πρέπει να χρησιμοποιούν δομημένους μηχανισμούς που επιβάλλουν τον διαχωρισμό των δεδομένων και τον κωδικό [S2].
Αρχή του ελάχιστου προνομίου
Οι εφαρμογές θα πρέπει να συνδέονται με τη βάση δεδομένων χρησιμοποιώντας τα χαμηλότερα δικαιώματα που απαιτούνται για τις εργασίες τους [S2]. Ένας λογαριασμός διαδικτυακής εφαρμογής δεν θα πρέπει να έχει δικαιώματα διαχειριστή και θα πρέπει να περιορίζεται στους συγκεκριμένους πίνακες ή λειτουργίες που είναι απαραίτητες για τη λειτουργία του [S2].
Επικύρωση και κωδικοποίηση εισόδου
Αν και δεν αντικαθιστά την παραμετροποίηση, η επικύρωση εισόδου παρέχει άμυνα σε βάθος [S2]. Οι εφαρμογές θα πρέπει να χρησιμοποιούν μια στρατηγική αποδοχής-γνωστού-καλού, επικυρώνοντας ότι η είσοδος ταιριάζει με τους αναμενόμενους τύπους, μήκη και μορφές [S2].
Πώς το FixVibe το δοκιμάζει
Το FixVibe καλύπτει ήδη την έγχυση SQL μέσω της περιφραγμένης μονάδας σαρωτή active.sqli. Οι ενεργές σαρώσεις εκτελούνται μόνο μετά από επαλήθευση και βεβαίωση ιδιοκτησίας τομέα. Ο έλεγχος ανιχνεύει τα τελικά σημεία GET ίδιας προέλευσης με παραμέτρους ερωτήματος, καθορίζει μια απόκριση γραμμής βάσης, αναζητά ανωμαλίες boolean που σχετίζονται με την SQL και αναφέρει ένα εύρημα μόνο μετά από επιβεβαίωση χρονισμού σε πολλαπλά μήκη καθυστέρησης. Οι σαρώσεις αποθετηρίου βοηθούν επίσης να εντοπιστεί η βασική αιτία νωρίτερα μέσω του code.web-app-risk-checklist-backfill, το οποίο επισημαίνει τις ακατέργαστες κλήσεις SQL που έχουν δημιουργηθεί με παρεμβολή προτύπου.
