Αντίκτυπος
Ένας εισβολέας μπορεί να κλέψει ευαίσθητα, επαληθευμένα δεδομένα από χρήστες μιας ευάλωτης εφαρμογής [S2]. Εάν ένας χρήστης επισκεφτεί έναν κακόβουλο ιστότοπο ενώ είναι συνδεδεμένος στην ευάλωτη εφαρμογή, ο κακόβουλος ιστότοπος μπορεί να υποβάλει αιτήματα πολλαπλής προέλευσης στο API της εφαρμογής και να διαβάσει τις απαντήσεις [S1][S2]. Αυτό μπορεί να οδηγήσει σε κλοπή προσωπικών πληροφοριών, συμπεριλαμβανομένων των προφίλ χρηστών, των διακριτικών CSRF ή των προσωπικών μηνυμάτων [S2].
Ριζική αιτία
Το CORS είναι ένας μηχανισμός που βασίζεται σε κεφαλίδες HTTP που επιτρέπει στους διακομιστές να προσδιορίζουν ποιες προελεύσεις (τομέας, σχήμα ή θύρα) επιτρέπεται να φορτώνουν πόρους [S1]. Τα τρωτά σημεία προκύπτουν συνήθως όταν η πολιτική CORS ενός διακομιστή είναι πολύ ευέλικτη ή δεν εφαρμόζεται σωστά [S2]:
- Κεφαλίδα ανακλώμενης προέλευσης: Ορισμένοι διακομιστές διαβάζουν την κεφαλίδα
Originαπό ένα αίτημα πελάτη και την επαναλαμβάνουν στην κεφαλίδα απόκρισηςAccess-Control-Allow-Origin(ACAO) [S2]. Αυτό επιτρέπει ουσιαστικά σε οποιονδήποτε ιστότοπο να έχει πρόσβαση στον πόρο [S2]. - Εσφαλμένες μπαλαντέρ: Ενώ ο χαρακτήρας μπαλαντέρ
*επιτρέπει σε οποιαδήποτε πηγή να έχει πρόσβαση σε έναν πόρο, δεν μπορεί να χρησιμοποιηθεί για αιτήματα που απαιτούν διαπιστευτήρια (όπως cookie ή κεφαλίδες εξουσιοδότησης) [S3]. Οι προγραμματιστές συχνά προσπαθούν να το παρακάμψουν δημιουργώντας δυναμικά την κεφαλίδα ACAO με βάση το αίτημα [S2]. - Στη λίστα επιτρεπόμενων "null": Ορισμένες εφαρμογές στη λίστα επιτρεπόμενων την προέλευση
null, η οποία μπορεί να ενεργοποιηθεί από ανακατευθυνόμενα αιτήματα ή τοπικά αρχεία, επιτρέποντας σε κακόβουλους ιστότοπους να μεταμφιεστούν ως προέλευσηnullγια να αποκτήσουν πρόσβαση [S2][S3]. - Σφάλματα ανάλυσης: Λάθη στο regex ή την αντιστοίχιση συμβολοσειρών κατά την επικύρωση της κεφαλίδας
Originμπορούν να επιτρέψουν στους εισβολείς να χρησιμοποιούν τομείς όπωςtrusted-domain.com.attacker.com[S2].
Είναι σημαντικό να σημειωθεί ότι το CORS δεν αποτελεί προστασία έναντι της πλαστογράφησης αιτημάτων διασταυρούμενης τοποθεσίας (CSRF) [S2].
Διορθώσεις σκυροδέματος
- Χρήση στατικής λευκής λίστας: Αποφύγετε τη δυναμική δημιουργία της κεφαλίδας
Access-Control-Allow-Originαπό την κεφαλίδαOriginτου αιτήματος [S2]. Αντίθετα, συγκρίνετε την προέλευση του αιτήματος με μια κωδικοποιημένη λίστα αξιόπιστων τομέων [S3]. - Αποφύγετε την "μηδενική" προέλευση: Μην συμπεριλάβετε ποτέ το
nullστη λίστα επιτρεπόμενων προέλευσης [S2]. - Περιορισμός διαπιστευτηρίων: Ορίστε μόνο το
Access-Control-Allow-Credentials: trueεάν είναι απολύτως απαραίτητο για τη συγκεκριμένη αλληλεπίδραση πολλαπλής προέλευσης [S3]. - Χρησιμοποιήστε την κατάλληλη επικύρωση: Εάν πρέπει να υποστηρίξετε πολλαπλές προελεύσεις, βεβαιωθείτε ότι η λογική επικύρωσης για την κεφαλίδα
Originείναι ισχυρή και δεν μπορεί να παρακαμφθεί από υποτομείς ή τομείς παρόμοιας εμφάνισης [S2].
Πώς το FixVibe το δοκιμάζει
Το FixVibe το περιλαμβάνει πλέον ως ενεργό έλεγχο με κλειστό όριο. Μετά την επαλήθευση τομέα, το active.cors στέλνει αιτήματα ίδιας προέλευσης API με συνθετική προέλευση εισβολέα και ελέγχει τις κεφαλίδες απόκρισης CORS. Οι αναφορές αντικατοπτρίζουν αυθαίρετες προελεύσεις, με διαπιστευτήρια μπαλαντέρ CORS και ανοιχτό CORS σε μη δημόσια τελικά σημεία API, αποφεύγοντας τον θόρυβο του δημόσιου στοιχείου.
