Αντίκτυπος
Η πλαστογράφηση αιτημάτων μεταξύ ιστότοπων (CSRF) επιτρέπει σε έναν εισβολέα να ξεγελάσει το πρόγραμμα περιήγησης ενός θύματος για να εκτελέσει ανεπιθύμητες ενέργειες σε έναν διαφορετικό ιστότοπο όπου το θύμα είναι επί του παρόντος πιστοποιημένος έλεγχος ταυτότητας. Επειδή τα προγράμματα περιήγησης περιλαμβάνουν αυτόματα διαπιστευτήρια περιβάλλοντος, όπως cookie σε αιτήματα, ένας εισβολέας μπορεί να πλαστογραφήσει λειτουργίες αλλαγής κατάστασης—όπως αλλαγή κωδικών πρόσβασης, διαγραφή δεδομένων ή εκκίνηση συναλλαγών—χωρίς να το γνωρίζει ο χρήστης.
Ριζική αιτία
Η θεμελιώδης αιτία του CSRF είναι η προεπιλεγμένη συμπεριφορά του προγράμματος περιήγησης Ιστού για την αποστολή cookie που σχετίζονται με έναν τομέα κάθε φορά που υποβάλλεται αίτημα σε αυτόν τον τομέα, ανεξάρτητα από την προέλευση του αιτήματος [S1]. Χωρίς συγκεκριμένη επικύρωση ότι ένα αίτημα ενεργοποιήθηκε σκόπιμα από τη διεπαφή χρήστη της εφαρμογής, ο διακομιστής δεν μπορεί να διακρίνει μεταξύ μιας νόμιμης ενέργειας χρήστη και μιας πλαστής ενέργειας.
Μηχανισμοί προστασίας Django CSRF
Το Django παρέχει ένα ενσωματωμένο αμυντικό σύστημα για τον μετριασμό αυτών των κινδύνων μέσω ενσωμάτωσης ενδιάμεσου λογισμικού και προτύπων [S2].
Ενεργοποίηση Middleware
Το django.middleware.csrf.CsrfViewMiddleware είναι υπεύθυνο για την προστασία CSRF και είναι συνήθως ενεργοποιημένο από προεπιλογή [S2]. Πρέπει να τοποθετηθεί πριν από οποιαδήποτε προβολή ενδιάμεσου λογισμικού που υποθέτει ότι οι επιθέσεις CSRF έχουν ήδη αντιμετωπιστεί [S2].
Υλοποίηση προτύπου
Για οποιεσδήποτε εσωτερικές φόρμες POST, οι προγραμματιστές πρέπει να περιλαμβάνουν την ετικέτα {% csrf_token %} μέσα στο στοιχείο <form> [S2]. Αυτό διασφαλίζει ότι ένα μοναδικό, μυστικό διακριτικό περιλαμβάνεται στο αίτημα, το οποίο στη συνέχεια ο διακομιστής επικυρώνει έναντι της περιόδου λειτουργίας του χρήστη.
Κίνδυνοι διαρροής διακριτικών
Μια κρίσιμη λεπτομέρεια υλοποίησης είναι ότι το {% csrf_token %} δεν πρέπει ποτέ να περιλαμβάνεται σε φόρμες που στοχεύουν εξωτερικές διευθύνσεις URL [S2]. Κάτι τέτοιο θα διαρρεύσει το μυστικό διακριτικό CSRF σε ένα τρίτο μέρος, δυνητικά θέτοντας σε κίνδυνο την ασφάλεια περιόδου λειτουργίας [S2] του χρήστη.
Άμυνα σε επίπεδο προγράμματος περιήγησης: Cookies SameSite
Τα σύγχρονα προγράμματα περιήγησης έχουν εισαγάγει το χαρακτηριστικό SameSite για την κεφαλίδα Set-Cookie για να παρέχουν ένα επίπεδο άμυνας σε βάθος [S1].
- Αυστηρό: Το cookie αποστέλλεται μόνο σε περιβάλλον πρώτου μέρους, που σημαίνει ότι ο ιστότοπος στη γραμμή URL αντιστοιχεί στον τομέα του cookie [S1].
- Χαλαρό: Το cookie δεν αποστέλλεται σε δευτερεύοντα αιτήματα μεταξύ τοποθεσιών (όπως εικόνες ή πλαίσια), αλλά αποστέλλεται όταν ένας χρήστης πλοηγείται στον ιστότοπο προέλευσης, όπως ακολουθώντας έναν τυπικό σύνδεσμο [S1].
Πώς το FixVibe το δοκιμάζει
Το FixVibe περιλαμβάνει πλέον προστασία CSRF ως ενεργό έλεγχο με κλειστό όριο. Μετά την επαλήθευση τομέα, το active.csrf-protection επιθεωρεί φόρμες που έχουν εντοπιστεί που αλλάζουν κατάσταση, ελέγχει για εισόδους σε σχήμα CSRF και σήματα cookie SameSite και, στη συνέχεια, επιχειρεί μια υποβολή χαμηλού αντίκτυπου πλαστής προέλευσης και αναφέρει μόνο όταν ο διακομιστής την αποδεχτεί. Οι έλεγχοι cookie επισημαίνουν επίσης αδύναμα χαρακτηριστικά SameSite που μειώνουν την άμυνα CSRF σε βάθος.
