- Η ρύπανση παραμέτρων HTTP εκμεταλλεύεται διπλότυπες παραμέτρους για να αλλάξει τη λογική των εφαρμογών ιστού εκμεταλλευόμενη την προτεραιότητα τιμών.
- Ο αντίκτυπός του κυμαίνεται από μικρές αποτυχίες έως παράκαμψη ελέγχου ταυτότητας και αποφυγή WAF, επηρεάζοντας ακόμη και μεγάλους παρόχους.
- Η αυτόματη ανίχνευση είναι περιορισμένη, επομένως είναι απαραίτητο να συνδυαστούν συγκεκριμένα εργαλεία, χειροκίνητοι έλεγχοι και καλές πρακτικές ασφαλούς ανάπτυξης.
- Η κατανόηση του τρόπου με τον οποίο κάθε στοίβα χειρίζεται επαναλαμβανόμενες παραμέτρους είναι το κλειδί για τον μετριασμό του HPP και την αποφυγή ασυνεπειών μεταξύ της επικύρωσης και της πραγματικής χρήσης.
Όταν μιλάμε για ασφάλεια εφαρμογών ιστού, πολλοί άνθρωποι σκέφτονται μόνο... Αποτυχίες SQL Injection, XSS ή ελέγχου ταυτότηταςΩστόσο, εδώ και χρόνια υπάρχει μια μάλλον αθόρυβη τεχνική που συνεχίζει να περνά απαρατήρητη σε πολλούς ελέγχους: η μόλυνση ή ρύπανση των παραμέτρων HTTP, γνωστή ως Ρύπανση παραμέτρων HTTP (HPP) o Μόλυνση παραμέτρων HTTP.
Αυτός ο τύπος ευπάθειας εκμεταλλεύεται τον τρόπο με τον οποίο διαφορετικές τεχνολογίες και πλαίσια διακομιστών διαχειρίζονται διπλότυπες παράμετροι στο ίδιο αίτημα HTTPΕάν η εφαρμογή δεν είναι προετοιμασμένη για αυτό, ένας εισβολέας μπορεί να τροποποιήσει την εσωτερική λογική, να παρακάμψει τις επικυρώσεις, να παραπλανήσει τα τείχη προστασίας εφαρμογών ιστού (WAF) και ακόμη και να αναλάβει τον έλεγχο κρίσιμων λειτουργιών όπως ο έλεγχος ταυτότητας ή η διαχείριση δικαιωμάτων.
Έννοια των παραμέτρων HTTP και της προτεραιότητας
Σε σχεδόν κάθε σύγχρονο ιστότοπο, οι χρήστες στέλνουν δεδομένα μέσω Παράμετροι HTTP στη διεύθυνση URL ή στο σώμα του αιτήματοςΑυτές οι παράμετροι επιτρέπουν στο πρόγραμμα περιήγησης να μεταβιβάζει πληροφορίες στην εφαρμογή: αναζητήσεις, δεδομένα φόρμας, επιλογές έρευνας, σχόλια, διαπιστευτήρια σύνδεσης κ.λπ.
Σε ένα τυπικό αίτημα GET, τα δεδομένα ταξιδεύουν στο συμβολοσειρά ερωτήματος (ό,τι ακολουθεί το σύμβολο ? στη διεύθυνση URL)Τα ζεύγη κλειδιού/τιμής διαχωρίζονται από το σύμβολο ampersand (&). Σε ένα αίτημα POST, μπορούν να βρίσκονται στο σώμα, αλλά η λογική της εφαρμογής στον διακομιστή συνήθως τα αντιμετωπίζει με πολύ παρόμοιο τρόπο: κλειδιά με μία ή περισσότερες συσχετισμένες τιμές.
Πολλές γλώσσες προγραμματισμού και πλαίσια παρέχουν μεθόδους για την απόκτηση και των δύο μια μοναδική τιμή μιας παραμέτρου όπως η πλήρης λίστα τιμών εάν αυτή η παράμετρος εμφανίζεται επανειλημμένα. Αυτό είναι σύνηθες, για παράδειγμα, με πλαίσια ελέγχου που επιτρέπουν πολλαπλή επιλογή, όπου το ίδιο όνομα παραμέτρου εμφανίζεται αρκετές φορές.
Το πρόβλημα προκύπτει όταν ο προγραμματιστής υποθέτει ότι Θα υπάρχει μόνο μία τιμή ανά παράμετρο. και χρησιμοποιεί συναρτήσεις που επιστρέφουν μία μόνο τιμή, ενώ το πρόγραμμα περιήγησης (ή ο εισβολέας) στέλνει πολλαπλές τιμές με το ίδιο όνομα. Σε αυτό το σημείο, έρχεται στο προσκήνιο μια βασική έννοια: προτεραιότητα τιμών.
Ανάλογα με τη γλώσσα, το πλαίσιο και τον διακομιστή ιστού, οι πολλαπλές εμφανίσεις της ίδιας παραμέτρου μπορούν να οδηγήσουν σε διάφορες συμπεριφορές: ότι το πρώτη τιμή που ελήφθηότι παίρνει το τελευταία τιμή ή που παράγεται ένας συνδυασμός όλων (για παράδειγμα, συνενωμένα με κόμματα)Δεν υπάρχει ενιαίο πρότυπο, επομένως κάθε τεχνολογική στοίβα μπορεί να συμπεριφέρεται διαφορετικά, γεγονός που ανοίγει την πόρτα σε πολύ επικίνδυνες καταστάσεις.
Το γεγονός ότι μια συνάρτηση επιστρέφει μόνο μία τιμή δεν αποτελεί από μόνο του ευπάθεια, αλλά όταν υπάρχει Διπλότυπες παράμετροι και ο προγραμματιστής δεν το γνωρίζει Ανάλογα με τον τρόπο που λειτουργεί αυτή η προτεραιότητα, η εφαρμογή μπορεί να λάβει μια απροσδόκητη τιμή. Αυτή η ανώμαλη συμπεριφορά είναι ακριβώς αυτό που εκμεταλλεύονται οι τεχνικές. Ρύπανση παραμέτρων HTTP.
Τι είναι η Ρύπανση Παραμέτρων HTTP (HPP);
Η ρύπανση από παραμέτρους HTTP είναι μια τεχνική που αποτελείται από εισαγωγή πρόσθετων παραμέτρων ή οριοθετών συμβολοσειρών ερωτήματος (κωδικοποιημένο) εντός άλλων υπαρχουσών παραμέτρων. Όταν αυτή η παράμετρος που έχει εισαχθεί αποκωδικοποιείται και επαναχρησιμοποιείται για τη δημιουργία μιας νέας διεύθυνσης URL ή για την κατασκευή ενός άλλου αιτήματος, η εφαρμογή Καταλήγει να ενσωματώνει επιπλέον παραμέτρους που ο προγραμματιστής δεν περίμενε..
Με άλλα λόγια, η HPP εκμεταλλεύεται τον τρόπο με τον οποίο η εφαρμογή Ανακατασκευάζει διευθύνσεις URL, επεξεργάζεται φόρμες και χειρίζεται επαναλαμβανόμενες παραμέτρους.Εάν η είσοδος δεν επικυρωθεί σωστά, ένας εισβολέας μπορεί να αναγκάσει την εφαρμογή να ερμηνεύσει τιμές διαφορετικές από τις αναμενόμενες ή να συμπεριλάβει πρόσθετες παραμέτρους σε συνδέσμους, φόρμες και ανακατευθύνσεις.
Οι τεχνικές HPP παρουσιάστηκαν δημόσια από Στέφανο Ντι Πάολα και Λούκα Καρετόνι στο συνέδριο OWASP AppSec 2009. Έκτοτε, έχουν καταγραφεί πολλά σενάρια επίθεσηςΑλλά ακόμη και σήμερα δεν έχουν την ίδια ορατότητα με άλλα, πιο γνωστά τρωτά σημεία, ούτε καλύπτονται πλήρως από όλα τα αυτοματοποιημένα εργαλεία.
Η επίδραση μιας επίθεσης HTTP Parameter Pollution εξαρτάται σε μεγάλο βαθμό από το συγκεκριμένη λογική της εφαρμογήςτου πλαισίου και του διακομιστή ιστού. Σε ορισμένες περιπτώσεις οι συνέπειες είναι μικρές (σφάλματα παρουσίασης, αποτυχίες εκτύπωσης ετικετών κ.λπ.), αλλά σε άλλες μπορεί να σημαίνει παράκαμψη ελέγχου ταυτότητας, τροποποίηση δικαιωμάτων ή χειραγώγηση κρίσιμων λειτουργιών.
Για να είναι πραγματικά εκμεταλλεύσιμη η ευπάθεια HPP, ο μηχανισμός ανάγνωσης παραμέτρων διακομιστή ή πλαισίου πρέπει να είναι επιστρέφει μια τιμή διαφορετική από την αναμενόμενη όταν συναντήσει διπλότυπες παραμέτρους. Από εκεί, ο εισβολέας μπορεί να χειραγωγήσει αυτήν την προτεραιότητα για να κατευθύνει τη ροή της εφαρμογής προς όφελός του.
Πώς χειρίζονται οι διακομιστές διπλότυπες παραμέτρους
Το βασικό τεχνικό στοιχείο που καθιστά δυνατή την ΥΠΠ έγκειται στην άνιση συμπεριφορά των διαφορετικών διακομιστές ιστού και γλώσσες backend κατά την επεξεργασία επαναλαμβανόμενων παραμέτρων. Δεν κάνουν όλοι το ίδιο πράγμα και αυτή η ποικιλία είναι ακριβώς αυτό που επιτρέπει στους εισβολείς να βρίσκουν τρωτά σημεία.
Σε ορισμένα περιβάλλοντα, αν στείλουμε μια διεύθυνση URL τύπου μεταβλητή1=τιμή1&μεταβλητή1=τιμή2ο διακομιστής θα διατηρήσει μόνο το πρώτη τιμή (val1). Σε άλλες περιπτώσεις, θα χρειαστεί το τελευταία τιμή που ελήφθη (val2). Και σε ορισμένες περιπτώσεις, όπως συμβαίνει με ορισμένες διαμορφώσεις του IIS, οι δύο τιμές είναι συνένωση εσωτερικά σε μια λίστα, για παράδειγμα χωρισμένα με κόμματα, τα οποία η εφαρμογή θα πρέπει στη συνέχεια να ερμηνεύσει.
Ένα συχνά αναφερόμενο παράδειγμα είναι ότι Apache Στην προεπιλεγμένη συμπεριφορά του, συνήθως διατηρεί την πρώτη τιμή μιας παραμέτρου και απορρίπτει τις επόμενες, ενώ άλλες τεχνολογίες δημιουργούν μια Λίστα CSV (Τιμές διαχωρισμένες με κόμμα) με όλες τις τιμές αυτής της μολυσμένης παραμέτρου. Εάν η εφαρμογή backend είναι προσαρμοσμένη μόνο σε μία από αυτές τις περιπτώσεις, τα ανεξέλεγκτα σενάρια μπορούν να προκαλέσουν απρόβλεπτα αποτελέσματα.
Αυτός ο χειρισμός διπλότυπων παραμέτρων όχι μόνο επηρεάζει τη λογική που είναι ορατή στον χρήστη, αλλά και εσωτερικοί έλεγχοι ασφαλείας, επικυρωτές εισόδου, ρουτίνες ελέγχου ταυτότητας και εξουσιοδότησηςΗ ίδια παράμετρος μπορεί να ελεγχθεί σε ένα σημείο της εφαρμογής χρησιμοποιώντας μία τιμή και να χρησιμοποιηθεί σε ένα άλλο σημείο με διαφορετική τιμή, όλα μέσα στο ίδιο αίτημα.
Επιπλέον, οι ΥΠΕ μπορούν να χρησιμοποιηθούν για την αξιοποίηση εσωτερικοί μετασχηματισμοί χαρακτήρων κάτι που κάνει ο ίδιος ο διακομιστής. Έχει τεκμηριωθεί, για παράδειγμα, πώς ορισμένοι διακομιστές αλλάζουν ορισμένους συγκεκριμένους χαρακτήρες (όπως η αντικατάσταση του χαρακτήρα "]" από "_") κατά την επεξεργασία, κάτι που μπορεί να χρησιμοποιηθεί για αποφυγή κανόνων φιλτραρίσματος ή υλικολογισμικών WAF που βασίζονται σε κανονικές εκφράσεις.
Συνέπειες και σενάρια εκμετάλλευσης των ΥΗΣ
Οι τεχνικές ρύπανσης παραμέτρων HTTP επιτρέπουν τη δημιουργία ενός αρκετά ευρέος φάσματος καταστάσεων κινδύνου, τόσο στην πλευρά του διακομιστή όσο και του πελάτη. Η σοβαρότητά τους εξαρτάται από το συνάρτηση της επηρεαζόμενης παραμέτρου και το σημείο στη ροή της εφαρμογής στο οποίο τροποποιείται.
Μεταξύ των πιο αξιοσημείωτων συνεπειών που παρατηρούνται σε ευάλωτες εφαρμογές είναι η αντικατάσταση προστατευμένων παραμέτρωνΈνας εισβολέας μπορεί να προσθέσει περισσότερες από μία τιμές για μια κρίσιμη παράμετρο και να αναγκάσει την εφαρμογή να χρησιμοποιήσει ακριβώς την κακόβουλη τιμή χάρη στον τρόπο με τον οποίο λειτουργεί η προτεραιότητα σε αυτό το συγκεκριμένο περιβάλλον.
Είναι επίσης σύνηθες για την HPP να επιτρέπει την τροποποίηση της αναμενόμενης συμπεριφοράς της εφαρμογήςΓια παράδειγμα, αλλάζοντας φίλτρα σε εσωτερικές μηχανές αναζήτησης, τροποποιώντας αναγνωριστικά πόρων, χειριζόμενοι λειτουργίες ψηφοφορίας ή μεταβάλλοντας παραμέτρους που ελέγχουν την επιχειρηματική λογική (όπως σημαίες διαχειριστή, λειτουργίες εντοπισμού σφαλμάτων ή καταστάσεις συναλλαγών).
Μια άλλη σημαντική συνέπεια είναι η αποφυγή επικυρώσεων εισόδουΕάν ο κώδικας επικύρωσης ασφαλείας εξετάσει την πρώτη εμφάνιση μιας παραμέτρου, αλλά η πραγματική λειτουργία εκτελείται με μεταγενέστερη εμφάνιση, ένας εισβολέας μπορεί να παρακάμψει φαινομενικά καλά εφαρμοσμένους ελέγχους ασφαλείας. Αυτό έχει παρατηρηθεί σε περιπτώσεις παράκαμψη ελέγχου ταυτότητας και πρόσβασης.
Σε πιο σύνθετα περιβάλλοντα, το HPP μπορεί να προκαλέσει εσωτερικά σφάλματα εφαρμογής, έκθεση ευαίσθητων πληροφοριών, πρόσβαση σε μεταβλητές εκτός του προβλεπόμενου πεδίου εφαρμογής και ακόμη και η χρήση συνενωμένων παραμέτρων που, μόλις επανασυναρμολογηθούν, σχηματίζουν ωφέλιμα φορτία που ένα WAF δεν ανίχνευσε κατά την ανάλυση κάθε παραμέτρου ξεχωριστά.
Όσον αφορά τις επιπτώσεις, έχουν παρατηρηθεί επιθέσεις και από τις δύο πλευρές. πλευρά του διακομιστή (παράκαμψη WAF, τροποποίηση της επανεγγραφής URL, επιβολή διαφορετικών εσωτερικών διαδρομών) από την πλευρά πελάτη (ένεση παραμέτρων σε συνδέσμους και φόρμες για την εξαπάτηση των θυμάτων μέσω ειδικά χειραγωγημένων URL).
Κλασικό παράδειγμα HPP σε μια εφαρμογή ψηφοφορίας
Για να κατανοήσουμε καλύτερα πώς λειτουργεί μια επίθεση HTTP Parameter Pollution, το παράδειγμα ενός διαδικτυακή εφαρμογή ψηφοφορίας γραμμένη σε JSPόπου οι χρήστες έχουν τη δυνατότητα να ψηφίσουν τον αγαπημένο τους υποψήφιο σε διαφορετικές εκλογές.
Η εφαρμογή λαμβάνει μέσω μιας παραμέτρου που ονομάζεται election_id Το αναγνωριστικό των τρεχουσών εκλογών. Με αυτήν την τιμή, ο διακομιστής δημιουργεί μια σελίδα που παραθέτει τους διαθέσιμους υποψηφίους, ο καθένας με έναν σύνδεσμο για να ψηφίσει. Η μέθοδος Request.getParameter("ζεύγος") Στο JSP, όταν υπάρχουν πολλαπλές τιμές για την ίδια παράμετρο, επιστρέφει πάντα το πρώτη τιμή.
Ας φανταστούμε μια διεύθυνση URL όπως αυτή: http://servidor/eleccion.jsp?eleccion_id=4568Η σελίδα που προκύπτει εμφανίζει έναν σύνδεσμο για να ψηφίσετε κάθε υποψήφιο, για παράδειγμα:
Σύνδεσμος 1Ψηφίζω τον κ. Γουάιτ
Σύνδεσμος 2Ψηφίζω την κυρία Γκριν
Ας υποθέσουμε ότι ένας κακόβουλος χρήστης, ο οποίος υποστηρίζει έναν συγκεκριμένο υποψήφιο, συνειδητοποιεί ότι η εφαρμογή δεν επικυρώνει με επιτυχία την παράμετρο choice_idΕκμεταλλευόμενο μια ευπάθεια HPP, αποφασίζει να κάνει ένεση στην παράμετρο υποψήφιος μέσα σε αυτό το choice_id, κωδικοποιώντας τους οριοθέτες συμβολοσειράς ερωτήματος.
Η διεύθυνση URL που δημιουργεί θα μπορούσε να είναι κάτι σαν: http://servidor/eleccion.jsp?eleccion_id=4568%26candidato%3DgreenΣημειώστε ότι ο εισβολέας έχει κωδικοποιήσει το σύμβολο & ως %26 και το σύμβολο = ως %3D, έτσι ώστε, μετά την αποκωδικοποίηση, να γίνουν μια νέα υποψήφια παράμετρος ενσωματωμένη στην τιμή election_id.
Όταν το θύμα κάνει κλικ σε αυτήν την παραποιημένη διεύθυνση URL, φαινομενικά έχει πρόσβαση στη σωστή επιλογή. Ωστόσο, επειδή η εφαρμογή χρησιμοποιεί την τιμή election_id για να κατασκευάσει τους συνδέσμους ψηφοφορίας, αποκωδικοποιώντας την εισαγόμενη τιμή... Καταλήγει να περιλαμβάνει έναν επιπλέον υποψήφιο στη συμβολοσειρά ερωτήματος που προκύπτει.
Το αποτέλεσμα είναι ότι οι εσωτερικά δημιουργημένοι σύνδεσμοι γίνονται κάπως έτσι:
Σύνδεσμος 1Ψηφίζω τον κ. Γουάιτ
Σύνδεσμος 2Ψηφίζω την κυρία Γκριν
Δεν έχει σημασία σε ποιον από τους δύο συνδέσμους κάνει κλικ το θύμα: στο σενάριο Το voting.jsp λαμβάνει πάντα δύο παρουσίες της υποψήφιας παραμέτρουόπου η πρώτη τιμή είναι πράσινο. Δεδομένου ότι ο προγραμματιστής χρησιμοποιεί τυπική λειτουργικότητα Java για να λάβει μία μόνο τιμή, λαμβάνει μόνο την πρώτη τιμή της υποψήφιας παραμέτρου και απορρίπτει τη δεύτερη, η οποία θα καταγράψει την πραγματική ψήφο του χρήστη.
Χάρη σε αυτήν τη συμπεριφορά, η ευπάθεια HPP επιτρέπει στον εισβολέα αναγκάζουν όλες τις ψήφους που δίνονται σε αυτήν τη σελίδα να πάνε στον υποψήφιό τουςανεξάρτητα από τις επιλογές του θύματος στη διεπαφή. Αυτό είναι ένα πολύ σαφές παράδειγμα του πώς μια υποτιθέμενα «απλή» διαχείριση παραμέτρων μπορεί να έχει άμεσο αντίκτυπο στο ακεραιότητα δεδομένων και επιχειρηματική λογική.
Παράκαμψη ελέγχου ταυτότητας: η περίπτωση του Blogger
Ένα από τα πιο διαβόητα παραδείγματα εκμετάλλευσης της ρύπανσης παραμέτρων HTTP συνέβη στο σύστημα ιστολογίου του BloggerΈνα κενό ασφαλείας στον χειρισμό παραμέτρων επέτρεψε σε εισβολείς να αποκτήσουν πρόσβαση σε γίνετε διαχειριστές ιστολογίων άλλων ανθρώπωναπλώς χειριζόμενοι τις παραμέτρους ενός αιτήματος POST.
Το προβληματικό αίτημα ήταν κάπως έτσι (απλοποιώντας τη σύνταξη):
POST /add-authors.do HTTP/1.1
security_token=attackertoken&blogID=attackerblogidvalue&blogID=victimblogidvalue&authorsList=attackermail%40gmail.com&ok=Πρόσκληση
Το πρόβλημα έγκειτο στο γεγονός ότι η μηχανισμός ελέγχου ταυτότητας και επαλήθευσης ασφαλείας Απλώς κοίταζα το πρώτη παράμετρος blogID που έφτασε στο αίτημα, επαληθεύοντας ότι ο χρήστης είχε δικαιώματα σε αυτό το ιστολόγιο. Ωστόσο, η πραγματική λειτουργία που πρόσθεσε ο φιλοξενούμενος συντάκτης εκτελέστηκε χρησιμοποιώντας το δεύτερη εμφάνιση του blogID, το οποίο αντιστοιχούσε στο ιστολόγιο του θύματος.
Χάρη σε αυτήν την εσωτερική αντίφαση, ο τρόπος με τον οποίο ο διακομιστής χειρίστηκε το διπλότυπες παράμετροιΟ εισβολέας κατάφερε να περάσει τους ελέγχους ασφαλείας για το δικό του ιστολόγιο, αλλά εκτέλεσε την ενέργεια στο άλλο ιστολόγιο. Το αποτέλεσμα ήταν ένα πλήρης παράκαμψη ελέγχου ταυτότητας με ένα μόνο καλογραμμένο αίτημα.
Αυτή η περίπτωση καταδεικνύει πολύ καλά πώς το HPP δεν είναι απλώς μια «τεχνική περιέργεια», αλλά μια τεχνική με πραγματικές επιπτώσεις στα συστήματα των μεγάλων παρόχωνΕπιπλέον, υπογραμμίζει τη σημασία των ελέγχων ασφαλείας και την εκτέλεση λειτουργιών χρησιμοποιώντας ακριβώς τις ίδιες τιμές παραμέτρων, χωρίς να εξαρτάται από ανεξέλεγκτη προτεραιότητα.
HPP και Τείχος προστασίας εφαρμογών ιστού (WAF)
Πολλοί οργανισμοί βασίζονται σε ένα WAF ως πρόσθετο επίπεδο για την προστασία των διαδικτυακών εφαρμογών τους από γνωστές επιθέσεις. Αυτά τα τείχη προστασίας συνήθως βασίζονται σε κανόνες και υπογραφές (κανονικές εκφράσεις) που εφαρμόζονται στις παραμέτρους, τις κεφαλίδες, ακόμη και στο σώμα των αιτημάτων HTTP.
Το πρόβλημα είναι ότι, παρουσία διπλότυπων παραμέτρων, ένας εισβολέας μπορεί κατακερματισμός ενός κακόβουλου φορτίου σε πολλές τιμές της ίδιας παραμέτρουΕνώ το WAF αναλύει κάθε παράμετρο ξεχωριστά, είναι πιθανό καμία από τις απομονωμένες τιμές να μην ταιριάζει με τις υπογραφές επίθεσης, επομένως το αίτημα περνάει τα φίλτρα χωρίς να μπλοκαριστεί.
Μόλις αυτό το αίτημα φτάσει στον διακομιστή ιστού, στη μηχανή εφαρμογής ή στον ίδιο τον διακομιστή επανασυναρμολογεί τις τιμές σύμφωνα με την εσωτερική του λογική (για παράδειγμα, συνενώνοντάς τα με κόμματα ή παίρνοντας το τελευταίο), με αποτέλεσμα μια συμβολοσειρά που, ως σύνολο, αποτελεί την επίθεση. Με αυτόν τον τρόπο, η ίδια τεχνική ρύπανσης παραμέτρων επιτρέπει παράκαμψη WAF που δεν είναι εξοπλισμένα για την ανάλυση του συνενωμένου συνόλου τιμών.
Επιπλέον, ορισμένα WAF που δεν λειτουργούν ως αντίστροφη μεσολάβηση Και εκείνες που δεν έχουν πλήρη εικόνα της ροής μεταξύ πελάτη και διακομιστή, αλλά λειτουργούν περισσότερο ως φίλτρα σημείων, μπορεί να είναι ιδιαίτερα ευάλωτες σε αυτές τις παρακάμψεις HPP. Εκείνες που βασίζονται σε τεχνολογίες όπως Apache με μηχανή βαθμολόγησης παραμέτρων και στατιστικής ανάλυσης Τείνουν να συμπεριφέρονται καλύτερα απέναντι σε τέτοιου είδους τεχνικές.
Εν ολίγοις, το HPP καταδεικνύει ότι ακόμη και με ένα σωστά διαμορφωμένο WAF, Η ασφάλεια δεν είναι εγγυημένη Εάν η ίδια η λογική της εφαρμογής και του διακομιστή χειρίζεται λανθασμένα διπλότυπες παραμέτρους, η προστασία πρέπει να είναι ολοκληρωμένη και να λαμβάνει υπόψη τον τρόπο με τον οποίο διεκπεραιώνονται τα αιτήματα σε όλα τα επίπεδα.
Πραγματικές περιπτώσεις, εργαλεία και επικράτηση του HPP
Η ακαδημαϊκή έρευνα και το έργο ειδικών σε θέματα ασφάλειας έχουν δείξει ότι η ρύπανση από παραμέτρους HTTP δεν είναι σπάνια. Έργα όπως PAPAS (Σύστημα Ανάλυσης Ρύπανσης με Παραμέτρα), καθοδηγούμενα από ερευνητές όπως η Κάρμεν Τοράνο, σχεδιάστηκαν ακριβώς για να αυτόματα εντοπισμός τρωτών σημείων HPP σε εφαρμογές ιστού μεγάλης κλίμακας.
Σε πειράματα που διεξήχθησαν σε περισσότερους από 5000 εξαιρετικά δημοφιλείς ιστοσελίδες (σύμφωνα με κατατάξεις όπως η Alexa), παρατηρήθηκε ότι σχεδόν 30% των ιστότοπων που αναλύθηκαν Περιείχαν τουλάχιστον μία σελίδα ευάλωτη στο HPP. Δηλαδή, ήταν δυνατό να εισαχθεί μια κωδικοποιημένη παράμετρος σε μια άλλη υπάρχουσα και να επαληθευτεί ότι εμφανιζόταν αποκωδικοποιημένη σε κάποια διεύθυνση URL ή μορφή που προέκυψε.
Ακόμα πιο εντυπωσιακό είναι ότι κοντά στο 47% των ευπαθειών που εντοπίστηκαν (που ισοδυναμεί με περίπου το 14% του συνόλου των ιστότοπων) ήταν πραγματικά εκμεταλλεύσιμοςεπιτρέποντας επιθέσεις που ξεπερνούσαν τα απλά ελαττώματα παρουσίασης. Μεταξύ των ιστότοπων που επηρεάστηκαν ήταν Μεγάλα ονόματα όπως η Microsoft ή η GoogleΑυτό καθιστά σαφές ότι ούτε καν οι τεχνολογικοί γίγαντες δεν εξαιρούνται από αυτά τα προβλήματα.
Εργαλεία όπως ΠΑΠΑΣ Έχουν χρησιμεύσει για την ανάλυση και την ποσοτικοποίηση του προβλήματος, αλλά έχουν επίσης επισημάνει τη δυσκολία του ανιχνεύει αυτόματα το HPPΠολλοί παραδοσιακοί σαρωτές ευπάθειας ιστού δεν λαμβάνουν υπόψη διεξοδικά τα σενάρια διπλότυπων παραμέτρων ή δημιουργούν πολύ μεγάλο όγκο ψευδώς θετικών αποτελεσμάτων.
Εκτός από συγκεκριμένες λύσεις όπως οι ΠΑΤΑΤΕΣ, υπάρχουν επεκτάσεις όπως HPP Finder για Google ChromeΑυτά τα εργαλεία έχουν σχεδιαστεί για την ανίχνευση πιθανών φορέων επίθεσης HPP σε URL και φόρμες HTML. Ενώ μπορούν να βοηθήσουν στον εντοπισμό ύποπτων σημείων (για παράδειγμα, φόρμες που επαναχρησιμοποιούν παραμέτρους χωρίς κατάλληλη επικύρωση), δεν αποτελούν... δεν αποτελεί ολοκληρωμένη λύση ούτε υποκατάστατο ενός εις βάθος ελέγχου ασφαλείας.
Ένα άλλο εργαλείο που χρησιμοποιείται ευρέως στο οικοσύστημα δοκιμών ασφαλείας είναι OWASP ZAPτο οποίο περιλαμβάνει επεκτάσεις και σενάρια για τον έλεγχο διαφορετικών διανυσμάτων, συμπεριλαμβανομένων εκείνων που σχετίζονται με παραμέτρους στη συμβολοσειρά ερωτήματος. Ωστόσο, στη συγκεκριμένη περίπτωση του HPP, εξακολουθεί να είναι απαραίτητο να συνδυαστούν αυτοματοποιημένα εργαλεία με χειροκίνητη ανάλυση και κατανόηση της ροής της εφαρμογής.
HPP σε εσωτερικές μηχανές αναζήτησης και παραδείγματα όπως το Apple.com
Τα HPP δεν έχουν παρατηρηθεί μόνο σε συστήματα διαχείρισης ιστολογίων ή σε πίνακες διαχείρισης, αλλά εμφανίζονται επίσης σε φαινομενικά αβλαβείς λειτουργίες όπως μηχανές αναζήτησης ετικετών σε διαδικτυακά φόρουμ και κοινότητες. Ένα εντυπωσιακό παράδειγμα βρέθηκε στο Φόρουμ της Apple, όπου η διαχείριση μολυσμένων ετικετών και παραμέτρων έδειξε περίεργες συμπεριφορές.
Σε αυτά τα φόρουμ, η επιλογή μιας ετικέτας στη διεπαφή προσέθετε μια παράμετρο ετικέτες Η τιμή της επιλεγμένης ετικέτας μεταβιβάστηκε στη συμβολοσειρά ερωτήματος στη διεύθυνση URL. Η εφαρμογή backend ανέκτησε αυτήν την τιμή, αναζήτησε θέματα με αυτήν την ετικέτα και εμφάνισε τα αποτελέσματα στον χρήστη. Εάν επιλέχθηκαν πολλές ετικέτες, προστέθηκαν όλες. στην ίδια παράμετρο ετικετών, διαχωρισμένες με τον τελεστή πρόσθεσης (+)έτσι ώστε το backend να είναι έτοιμο να επεξεργαστεί αυτήν τη λίστα.
Όταν η παράμετρος ετικετών μολύνθηκε με αρκετές διπλότυπες τιμές, παρατηρήθηκε ότι η τεχνολογία backend δημιούργησε ένα λίστα διαχωρισμένη με κόμμα (CSV) με όλες τις τιμές των μολυσμένων παραμέτρων. Η εφαρμογή μπόρεσε να επεξεργαστεί εν μέρει αυτήν τη λίστα (να ανακαλύψει τις διαφορετικές ετικέτες) αλλά Δεν εκτύπωσε σωστά όλες τις ετικέτες. στο πεδίο κειμένου της μηχανής αναζήτησης.
Σε αυτό το συγκεκριμένο πλαίσιο, δεν φαινόταν να υπάρχει κάποιο εκμεταλλεύσιμο σφάλμα ασφαλείας, αλλά ήταν σαφές ότι Υπήρχαν σενάρια που δεν έλαβαν υπόψη οι προγραμματιστέςΣε άλλες, λιγότερο αθώες εφαρμογές, παρόμοια συμπεριφορά θα μπορούσε να οδηγήσει σε αποκλίσεις μεταξύ αυτού που επικυρώνεται, αυτού που χρησιμοποιείται και αυτού που εμφανίζεται στον χρήστη, με πιο σοβαρές συνέπειες.
Η ανάλυση των υποκείμενων τεχνολογιών σε φόρουμ όπως αυτό της Apple (για παράδειγμα, Apache με J2EE στο backend) δείχνει ότι πολλές σύγχρονες στοίβες συμπεριφέρονται παρόμοια με διακομιστές όπως οι IIS ή συνδυασμούς όπως οι Apache με Python κατά τον χειρισμό μολυσμένων παραμέτρων, τη δημιουργία λιστών διαχωρισμένων με κόμματα και την ανάθεση της τελικής επεξεργασίας αυτών των τιμών στη λογική της εφαρμογής.
Αυτού του είδους τα παραδείγματα χρησιμεύουν ως υπενθύμιση ότι Δεν αρκεί να «φαίνεται ότι λειτουργεί» σε κανονικές περιπτώσεις.Πρέπει να ελέγχετε συστηματικά τον τρόπο με τον οποίο αντιδρά η εφαρμογή όταν της αποστέλλονται διπλότυπες παράμετροι, τιμές με παράξενο κώδικα, ασυνήθιστοι συνδυασμοί κ.λπ., επειδή εκεί βρίσκει τη θέση της η HPP.
Ανίχνευση και μετριασμός της ρύπανσης παραμέτρων HTTP
Η ανίχνευση και ο μετριασμός των HPP απαιτεί μια υβριδική προσέγγιση που συνδυάζει καλές πρακτικές ασφαλούς ανάπτυξης, σωστή διαμόρφωση διακομιστή και χρήση συγκεκριμένων εργαλείωνΔεν αρκεί να βασιζόμαστε στο WAF για να διορθώσουμε τα πάντα, γιατί όπως έχουμε δει, πολλές φορές είναι ακριβώς αυτό το επίπεδο που μπορεί να εξαπατηθεί.
Από την άποψη της ανάπτυξης, είναι απαραίτητο οι προγραμματιστές Λάβετε υπόψη ότι μια παράμετρος μπορεί να έχει πολλαπλές τιμές και πρέπει να αποφασίσουν ρητά πώς θα χειριστούν αυτήν την περίπτωση. Δεν θα πρέπει να βασίζονται σε προεπιλεγμένη γλώσσα ή συμπεριφορές πλαισίου χωρίς να κατανοούν πλήρως τον τρόπο λειτουργίας της προτεραιότητας τιμών.
Συνιστάται επίσης, σε κρίσιμα σημεία, όπως π.χ. έλεγχος ταυτότητας, εξουσιοδότηση, ευαίσθητες λειτουργίες ή σημαντικές αλλαγές κατάστασηςΕίναι αυστηρά επικυρωμένο ότι οι παράμετροι εμφανίζονται μόνο μία φορά, απορρίπτοντας αιτήματα με διπλότυπες παραμέτρους ή, τουλάχιστον, καταγράφοντάς τα για ανάλυση.
Όσον αφορά τις υποδομές, είναι σκόπιμο να επανεξεταστούν οι διαμορφώσεις διακομιστή ιστού και πλαισίου Για να κατανοήσουμε ακριβώς τι συμβαίνει όταν λαμβάνεται μια επαναλαμβανόμενη παράμετρος: εάν διατηρείται η πρώτη, η τελευταία ή όλες μαζί. Από εκεί, η λογική της εφαρμογής μπορεί να προσαρμοστεί για να αποφευχθούν αποκλίσεις μεταξύ της επικύρωσης και της πραγματικής χρήσης της τιμής.
Όσον αφορά τα εργαλεία, εκτός από τους συνήθεις σαρωτές ευπάθειας, είναι χρήσιμο να ενσωματωθούν στοχευμένες λύσεις όπως ΠΑΠΑΣ ή τύπος επεκτάσεων HPP Finder στη ροή δοκιμών. Εάν χρησιμοποιείται OWASP ZAP ή άλλα εργαλεία διείσδυσης, αξίζει να σχεδιαστούν συγκεκριμένα σενάρια που δημιουργούν αιτήματα με διπλότυπες παραμέτρους και τιμές κωδικοποιημένες με διαφορετικούς τρόπους για να παρατηρήσετε την αντίδραση της εφαρμογής.
Τέλος, είναι σημαντικό να αναγνωρίσουμε ότι η HPP αποτελεί πρόβλημα. πολύ πιο διαδεδομένο από ό,τι πιστεύεται συνήθωςΑυτό ισχύει ιδιαίτερα σε μεγάλες εφαρμογές με πολλά χρόνια εξέλιξης. Ο συνδυασμός εκπαίδευσης, αναθεώρησης κώδικα, αυτοματοποιημένων δοκιμών και καλά σχεδιασμένων χειροκίνητων δοκιμών είναι ο καλύτερος τρόπος για να διατηρήσετε αυτά τα σφάλματα υπό έλεγχο.
Η μόλυνση των παραμέτρων HTTP έχει δικαίως κερδίσει τη θέση της ανάμεσα στις τεχνικές επίθεσης ιστού που κάθε ομάδα ανάπτυξης και ασφάλειας θα πρέπει να έχει στο ραντάρ της: Είναι διακριτικό, δύσκολο να το δει κανείς με μια απλή ματιά στα κούτσουρα και μπορεί να έχει πολύ σοβαρές συνέπειες. αν επηρεάζει βασικές παραμέτρους της επιχειρηματικής λογικής ή των ελέγχων ασφαλείας. Η κατανόηση του τρόπου χειρισμού των διπλότυπων παραμέτρων στη στοίβα σας και η ενεργή δοκιμή αυτών των σεναρίων είναι μια από εκείνες τις εργασίες που μπορεί να φαίνονται λίγο κουραστικές στην αρχή, αλλά κάνουν τη διαφορά μεταξύ μιας απλώς λειτουργικής εφαρμογής και μιας εφαρμογής που είναι πραγματικά ανθεκτική σε προηγμένες επιθέσεις.
Παθιασμένος συγγραφέας για τον κόσμο των byte και της τεχνολογίας γενικότερα. Μου αρέσει να μοιράζομαι τις γνώσεις μου μέσω της γραφής, και αυτό θα κάνω σε αυτό το blog, θα σας δείξω όλα τα πιο ενδιαφέροντα πράγματα σχετικά με τα gadget, το λογισμικό, το υλικό, τις τεχνολογικές τάσεις και πολλά άλλα. Στόχος μου είναι να σας βοηθήσω να περιηγηθείτε στον ψηφιακό κόσμο με απλό και διασκεδαστικό τρόπο.

