Τρωτά σημεία oauth | Πώς να εφαρμόσετε την ασφαλή εξουσιοδότηση στην εφαρμογή Web

Anonim
Τρωτά σημεία oauth | Πώς να εφαρμόσετε την ασφαλή εξουσιοδότηση στην εφαρμογή Web 2740_1

Αυτό το άρθρο θα ασχοληθεί με τις γνωστές ευπάθειες OAUTH. Οι αναγνώστες θα μάθουν επίσης πώς να εφαρμόζουν ασφαλή και ασφαλή εξουσιοδότηση στην εφαρμογή Web.

Το OAUTH είναι ένα αξιόπιστο πρωτόκολλο, αλλά ο βαθμός ασφάλειας εξαρτάται σε μεγάλο βαθμό από την ευαισθητοποίηση των προγραμματιστών στο διαδίκτυο κατά την εφαρμογή της άδειας. Αυτό κάνει αυτό το θέμα εξαιρετικά σημαντικό για τους επαγγελματίες ασφάλειας πληροφοριών. Πρέπει να παρέχουν ένα υψηλό επίπεδο προστασίας των λογαριασμών των χρηστών τους. Ήρθε η ώρα να εξοικειωθούμε αποτελεσματικοί ασκούμενοι που θα συμβάλουν στη μείωση του κινδύνου της κακής πώλησης ΟΑΟΥΡ.

Εισαγωγή

Το πρωτόκολλο OAUTH 2.0 χρησιμοποιείται επί του παρόντος ευρέως σε διάφορες εφαρμογές. Χρησιμοποιώντας το, μια βολική διεπαφή χρήστη γίνεται διαθέσιμη, ευκολότερη έλεγχος ταυτότητας και εξουσιοδότηση σε σύγκριση με τις παραδοσιακές μεθόδους για την εισαγωγή του ονόματος χρήστη και του κωδικού πρόσβασης. Με την κατάλληλη και στοχαστική εφαρμογή, το πρωτόκολλο OAUTH θα είναι ασφαλέστερο από την παραδοσιακή εξουσιοδότηση, δεδομένου ότι οι χρήστες δεν χρειάζεται να μοιράζονται τα λογιστικά τους δεδομένα με μια εφαρμογή τρίτου μέρους πρόσβασης σε συγκεκριμένο πόρο. Οι χρήστες προτιμούν συχνά να συνδεθούν χρησιμοποιώντας τους λογαριασμούς Google, το Facebook ή το Linkedin, αντί να δημιουργήσουν ένα νέο λογαριασμό κάθε φορά που πρέπει να εγγραφείτε σε κάποια ιστοσελίδα. Έτσι, το πρωτόκολλο OAUTH απλοποιεί σημαντικά τη ζωή μας.

Γενικά, οι δημοφιλείς πάροχοι υπηρεσιών OAURE είναι πολύ αξιόπιστοι. Σύνδεση με το Google ή το λογαριασμό Facebook εμπνέει μια συγκεκριμένη αίσθηση ασφάλειας και είναι σωστή. Το πρωτόκολλο δοκιμάζεται προσεκτικά από εμπειρογνώμονες. Όλες οι διαθέσιμες ευπάθειες διορθώνεται πάντα γρήγορα από την ομάδα προγραμματιστών. Ωστόσο, αξίζει να σημειωθεί ότι το αίσθημα πλήρους ασφάλειας μπορεί να είναι ψευδές.

Οι πάροχοι υπηρεσιών OAUR εγκατέλειψαν τους προγραμματιστές εφαρμογών πολλοί λόγοι να υποστηρίξουν την ασφάλεια των προγραμμάτων τους. Στην πραγματικότητα, η αρχικά προστατευμένη υπηρεσία OAURT, η οποία εφαρμόστηκε εσφαλμένα στη διαδικασία της εγκατάστασής της, μπορεί να γίνει εύκολος στόχος για τους εισβολείς. Μια τέτοια ανησυχία θα οδηγήσει στην κλοπή προσωπικών δεδομένων των χρηστών.

Στη συνέχεια, θα πρέπει να εξετάσετε τις πιο συχνές ευπάθειες που συναντώνται σε εφαρμογές τρίτων που εφαρμόζουν το πρωτόκολλο OAUTH για την εξουσιοδότηση των χρηστών τους. Πρέπει να θυμόμαστε ότι το ίδιο το πρωτόκολλο είναι ασφαλές και αξιόπιστο. Μόνο μετά από εσφαλμένη εφαρμογή, γίνεται ευάλωτη στις επιθέσεις χάκερ.

Oauth tockey κλοπή χρησιμοποιώντας την κεφαλίδα του αναφοροποιητή

Όταν η αίτηση ζητά άδεια εξ ονόματος του χρήστη στο διακομιστή OAUTH, ένα άτομο λαμβάνει τον κώδικα για να εισέλθει και να στείλει πίσω στο διακομιστή για τον επόμενο έλεγχο της. Εάν κατά τη διάρκεια της εργασίας ο χρήστης θα ανακατευθυνθεί σε άλλη σελίδα, ο κώδικας θα παρατηρηθεί στον επικεφαλίδα "Αναφορά" του αιτήματος HTTP. Έτσι, ο κώδικας θα πέσει στον εξωτερικό ιστότοπο, το οποίο θα απειλήσει τα δεδομένα χρήστη που έχουν εγγραφεί στον διακομιστή OAUTH.

Σημείωση: Η κεφαλίδα του αναφοροποιητή είναι μια κεφαλίδα ερωτήματος HTTP, μεταδίδει τον ξενιστή URL από τον οποίο αποστέλλεται η αίτηση.

Για να μαλακώσετε τις συνέπειες αυτής της ευπάθειας, ο προγραμματιστής πρέπει να βεβαιωθεί ότι η εφαρμογή του Web δεν περιέχει ενέσεις HTML. Εάν εντοπίστηκαν οι ενέσεις, ο εισβολέας μπορεί εύκολα να ρυθμίσει την ετικέτα εικόνας στον διακομιστή ιστού του και να βρει έναν τρόπο να ανακατευθύνει τον χρήστη σε αυτό. Έτσι, θα έχει την ευκαιρία να κλέψει τον κώδικα από τον τίτλο "Αναφορά" του αιτήματος HTTP.

Oauth Tockey Topkey χρησιμοποιώντας την παράμετρο Redirect_uri

Η αίτηση ξεκινά τη διαδικασία εξουσιοδότησης αποστέλλοντας ένα αίτημα στο διακομιστή OAUTH:

https://www.example.com/signin/authorize? [....]&redirect_uri=httpps://demo.example.com/loginsucessful.

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

https://www.example.com/signin/authorize? [.... ]&redirect_uri=httpps://localhost.evil.com.

Μερικές φορές παρόμοιες διευθύνσεις URL είναι μπλοκαρισμένες. Ο επιτιθέμενος μπορεί να ανακατευθύνει τα ληφθέντα δεδομένα σχετικά με την ανοιχτή διεύθυνση URL, όπως αυτή:

https://www.example.com/oauth20_authorize.srf? [... [...]

Ή αυτό:

https://www.example.com/oauth2/authorize; [...]% IRET_URI = https% 3a% 2f% 2fapps.facebook.com% 2fattacker% 2f.

Κατά την εφαρμογή του OAUTH, δεν μπορείτε ποτέ να συμπεριλάβετε ολόκληρους τομείς στη λευκή λίστα. Μόνο μερικές διευθύνσεις URL πρέπει να προστεθούν στο "Redirect_uri" που δεν ανακατεύονται ένα αίτημα για να ανοίξει ανακατεύθυνση.

Πλαστογραφία των αιτημάτων διασταυρούμενης γραμμής

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

Αξίζει να προβάλλε πώς η επίθεση της CSRF διεξάγεται στο OAUTH και ως παράμετρος "κράτους" μπορεί να χρησιμοποιηθεί για την άμβλυνση των επιπτώσεων της ευπάθειας.

Ο χάκερ ανοίγει μια εφαρμογή ιστού και ξεκινά τη διαδικασία εξουσιοδότησης για πρόσβαση στον πάροχο υπηρεσιών χρησιμοποιώντας το OAUTH. Η αίτηση ζητά έναν πάροχο υπηρεσιών να έχει πρόσβαση σε αυτές που πρέπει να παρέχονται. Ο χάκερ θα μεταφερθεί στον ιστότοπο του παρόχου υπηρεσιών, όπου συνήθως πρέπει να εισάγετε το όνομα χρήστη και τον κωδικό πρόσβασής σας για να επιτρέψετε την πρόσβαση. Αντ 'αυτού, ο χάκερ παγιδεύει και αποτρέπει αυτό το αίτημα και σώζει τη διεύθυνση URL του. Ο χάκερ αναγκάζει κάπως το θύμα να ανοίξει αυτή τη διεύθυνση URL. Εάν το θύμα εισήλθε στο σύστημα του παρόχου υπηρεσιών χρησιμοποιώντας το λογαριασμό της, τότε τα διαπιστευτήρια της θα χρησιμοποιηθούν για την έκδοση κώδικα εξουσιοδότησης. Ο κώδικας εξουσιοδότησης ανταλλάσσει την πρόσβαση στο διακριτικό πρόσβασης. Τώρα ο λογαριασμός χάκερ στην εφαρμογή έχει εγκριθεί. Μπορεί να έχει πρόσβαση στον λογαριασμό του θύματος.

Έτσι, πώς μπορώ να εμποδίσω αυτή την κατάσταση χρησιμοποιώντας την παράμετρο "κράτους";

Η εφαρμογή πρέπει να δημιουργήσει μια τιμή που βασίζεται κατά κάποιο τρόπο στον λογαριασμό προέλευσης (για παράδειγμα, χρησιμοποιήστε το πλήκτρο Hash Session User). Δεν είναι τόσο σημαντικό τι είναι, το κύριο πράγμα είναι ότι η αξία είναι μοναδική και δημιουργείται χρησιμοποιώντας ιδιωτικές πληροφορίες σχετικά με τον αρχικό χρήστη. Ανατίθεται στην παράμετρο "Κατάσταση".

Αυτή η τιμή μεταδίδεται στον πάροχο υπηρεσιών κατά την ανακατεύθυνση. Τώρα ο χάκερ καλεί το θύμα να ανοίξει τη διεύθυνση URL, την οποία διατηρήθηκε.

Ο κώδικας εξουσιοδότησης εκδίδεται και αποστέλλεται πίσω στον πελάτη στη σύνοδο μαζί με την παράμετρο "Κατάσταση".

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

Άλλες ευπάθειες που εντοπίστηκαν κατά την εφαρμογή του ΟΑΟΥΝ ότι η δυνατότητα εκτέλεσης XSS (Scripting Cross-site) χρησιμοποιώντας την παράμετρο "Redirect_uri", η ρύθμιση του ιδιωτικού κλειδιού OAUR (το κλειδί μπορεί μερικές φορές να επιτευχθεί κατά την αποσυμπίεση μιας εφαρμογής κινητής τηλεφωνίας) και την παραβίαση του κώδικα εξουσιοδότησης (πότε Ο κωδικός εξουσιοδότησης μπορεί να χρησιμοποιηθεί περισσότερο από μία φορά για την έκδοση μάρκες πολλαπλών πρόσβασης). Αυτά τα τρωτά σημεία είναι λιγότερο κοινά από αυτά που περιγράφονται παραπάνω, αλλά δεν τους κάνει λιγότερο επικίνδυνους. Ο προγραμματιστής πρέπει να γνωρίζει όλες τις απαραίτητες πρακτικές για να εξασφαλίσει αξιόπιστη λειτουργία της εφαρμογής του ιστού.

Ο συγγραφέας του μεταφρασμένου άρθρου: Simon Saliba.

Σπουδαίος! Πληροφορίες αποκλειστικά για ακαδημαϊκούς σκοπούς. Συμπληρώστε τη νομοθεσία και μην εφαρμόζετε αυτές τις πληροφορίες για παράνομους σκοπούς.

Πιο ενδιαφέρον υλικό στο cisoclub.ru. Εγγραφείτε σε εμάς: Facebook | Vk | Twitter | Instagram | Τηλεγράφημα | Zen | Αγγελιοφόρος | Icq νέα | YouTube | Σφυγμός.

Διαβάστε περισσότερα