Ένα email με κωδικό πρόσβασης αποδεικνύει αντιστρεψιμότητα, όχι σχήμα
Μια υπηρεσία που στέλνει με email τον τρέχοντα κωδικό πρόσβασής σας έδειξε ότι μπορεί να ανακτήσει το μυστικό, όχι ποιον αλγόριθμο χρησιμοποιεί. Σχεδιάστε τις επαναφορές γύρω από την εξουσιοδότηση.
Μια υπηρεσία που στέλνει με email τον τρέχοντα κωδικό πρόσβασης ενός χρήστη απέδειξε ένα πράγμα: μπορεί να αποκτήσει αυτό το μυστικό σε μορφή που μπορεί να στείλει. Δεν απέδειξε ποια στήλη, αλγόριθμος ή βιβλιοθήκη το παρήγαγε. Η διάκριση έχει σημασία, γιατί το εύρημα είναι πραγματικό και το συμπέρασμα που βγάζουν οι άνθρωποι από αυτό είναι συνήθως υπερβολικά συγκεκριμένο. Η αντιστρεψιμότητα κάπου στη διαδρομή είναι ο μηχανισμός· μια εικασία για τη μορφή αποθήκευσης δεν είναι.
Κρατήστε τα στοιχεία σε αυτό το επίπεδο και η υπόλοιπη αξιολόγηση παραμένει ακριβής.
Τι αποδεικνύει η επιστροφή του παλιού μυστικού
Ένας επαληθευτής μονής κατεύθυνσης δεν μπορεί να παράγει τον αρχικό κωδικό πρόσβασης, γιατί σχεδιάστηκε ώστε να μην είναι αντιστρέψιμος. Αν η υπηρεσία μπορεί να στείλει τον κωδικό με email, τότε εκείνη τη στιγμή κρατά υλικό από το οποίο ο κωδικός μπορεί να ανακτηθεί, ή υποκλέπτει και αποθηκεύει το απλό κείμενο πριν από το hashing. Σε κάθε περίπτωση η διαδρομή ανάκτησης είναι αντιστρέψιμη, και αυτό είναι ένα γνήσιο εύρημα ασφαλείας. Δεν λέει τίποτα για το αν η ίδια βάση δεδομένων χρησιμοποιεί δαπανηρό hash για άλλες στήλες.
Προσέξτε και την ενδιάμεση περίπτωση: ένα αποθηκευμένο κρυπτογραφημένο blob με κλειδί που κρατά η εφαρμογή είναι αντιστρέψιμο στην πράξη, ακόμη και αν η λέξη κρυπτογραφημένο ακούγεται καθησυχαστική σε μια αναφορά.
Γιατί είναι εύρημα σχεδίασης και όχι χάρτης αποθήκευσης
Το email αποδεικνύει την ανακτησιμότητα και δεν προσδιορίζει το ακριβές σχήμα. Μπορεί να είναι απλό κείμενο, ντετερμινιστική κρυπτογράφηση, μια ρουτίνα συσκότισης προμηθευτή ή ένα ξεχωριστό αποθετήριο διαπιστευτηρίων που χρησιμοποιείται μόνο για ανάκτηση. Διαφορετικά μέρη ενός προϊόντος συχνά χρησιμοποιούν διαφορετική αποθήκευση. Το να αποδώσεις αλγόριθμο με βάση ένα email είναι ο τύπος ισχυρισμού που καταρρέει στην επόμενη συνάντηση.
Αυτό που μπορείτε να πείτε είναι στενότερο και χρησιμότερο: αυτή η διαδρομή μπορεί να ανακτήσει το μυστικό, άρα το προϊόν δεν μπορεί να ισχυριστεί ότι δεν υπάρχει ανακτήσιμο διαπιστευτήριο. Ό,τι πέρα από αυτό χρειάζεται τα στοιχεία του διαχειριστή.
Χτίστε την επαναφορά γύρω από την εξουσιοδότηση
Η επαναφορά λύνει ένα άλλο πρόβλημα: να αποδείξει ότι ο αιτών επιτρέπεται να επιλέξει νέο κωδικό πρόσβασης. Η καθοδήγηση του OWASP για αυτό περιγράφει ασφαλώς παραγόμενα token ή κωδικούς μίας χρήσης με κατάλληλη λήξη και αντιμετωπίζει το στάδιο του αιτήματος ως κάτι που πρέπει να προστατεύεται από απαρίθμηση και πλημμύρα. Ένα μη πιστοποιημένο αίτημα δεν πρέπει να αλλάζει τον λογαριασμό από μόνο του. Επικυρώστε την εξουσιοδότηση πριν δεχτείτε την αντικατάσταση και κάντε το token άχρηστο μετά από μία επιτυχή χρήση.
Το κανάλι email είναι μέρος του μοντέλου ασφαλείας. Η κατοχή ενός ονόματος λογαριασμού δεν αποδεικνύει τίποτα, και μια ροή επαναφοράς που αποκαλύπτει αν υπάρχει λογαριασμός δίνει σε έναν επιτιθέμενο έναν κατάλογο για να δουλέψει.
Ακυρώστε ό,τι προστάτευε ο κωδικός
Η αλλαγή κωδικού πρόσβασης δεν τερματίζει αυτόματα την πρόσβαση που παρείχε. Οι ενεργές συνεδρίες VPN, οι απομνημονευμένες συσκευές και τα token που εκδίδει ο διακομιστής μπορεί να έχουν η καθεμία τη δική της συμπεριφορά ακύρωσης. Αποφασίστε συνειδητά ποιες από αυτές πρέπει να λήξουν και επαληθεύστε ότι η υλοποίηση το κάνει, γιατί ένας χρήστης που υποθέτει ότι μια επαναφορά τον αποσυνέδεσε παντού συχνά κάνει λάθος. Καταγράψτε αυτή την απόφαση μαζί με τη ροή.
Για διαχειριστές: τεκμηριώστε ποιο στοιχείο επαληθεύει το αίτημα, ποιο αλλάζει το διαπιστευτήριο και πώς χειρίζονται οι σχετικές συνεδρίες. Για χρήστες: προστατέψτε το νόμιμο κανάλι ανάκτησης και αντιμετωπίστε οποιοδήποτε μήνυμα επιστρέφει κωδικό πρόσβασης ως ύποπτο.
Η ακριβής αξιολόγηση είναι σύντομη: τι αποδεικνύει το μήνυμα, τι παραμένει άγνωστο και αν η ανάκτηση αντικαθιστά την πρόσβαση μέσω ελεγχόμενης διαδικασίας.