Τι είναι η δέσμη ενεργειών μεταξύ τοποθεσιών;

Μία από τις πιο κοινές κατηγορίες ευπάθειας σε ιστότοπους ονομάζεται "Σενάριο διασταυρώσεων" ή "XSS". Τα τρωτά σημεία XSS είναι εκεί όπου είναι δυνατό για έναν χρήστη να προκαλέσει την εκτέλεση JavaScript. Υπάρχει ένας αριθμός διαφορετικών παραλλαγών ευπάθειας XSS, με διάφορους βαθμούς σοβαρότητας.

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

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

Μια άλλη μορφή δέσμης ενεργειών μεταξύ τοποθεσιών είναι το "Reflected", αυτός ο τύπος δεν αποθηκεύεται σε κανένα σημείο, αντίθετα, το ωφέλιμο φορτίο περιλαμβάνεται στο πρόγραμμα περιήγησης. Συνήθως, αυτός ο τύπος XSS αποτελεί μέρος επιθέσεων phishing, όπου ένας εισβολέας προσπαθεί να ξεγελάσει ένα θύμα για να κάνει κλικ σε έναν κακόβουλο σύνδεσμο.

Γενικά, οι περισσότερες επιθέσεις XSS αποστέλλουν το ωφέλιμο φορτίο στον διακομιστή κάποια στιγμή, αλλά ορισμένες επιθέσεις αποστέλλονται καθαρά από την πλευρά του πελάτη, δεν αποστέλλεται ποτέ στον διακομιστή και αντίθετα επηρεάζει μόνο την πλευρά του πελάτη JavaScript. Αυτό ονομάζεται XSS που βασίζεται σε DOM καθώς παραμένει στο μοντέλο αντικειμένου εγγράφου JavaScript ή DOM. Αυτός ο τύπος ευπάθειας είναι ιδιαίτερα δύσκολο να εντοπιστεί και να επιλυθεί επειδή τα exploit δεν φαίνονται ποτέ από τον διακομιστή και επομένως δεν μπορούν να καταγραφούν.

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