Δύο άνθρωποι μπορούν να κοιτάξουν την ίδια ανάπτυξη SSTP και να καταλήξουν σε αντίθετα συμπεράσματα. Ο ένας διαβάζει την τεκμηρίωση του προϊόντος, βλέπει τα γράμματα SSL και υποθέτει ότι η σήραγγα εκτελεί ένα πρωτόκολλο που αποσύρθηκε πριν από χρόνια. Ο άλλος δείχνει μια σύγχρονη χειραψία και συμπεραίνει ότι το ζήτημα έκλεισε. Και οι δύο επιχειρηματολογούν από ετικέτες και όχι από τη διαπραγματευμένη έκδοση, και μόνο ένα από τα δύο είναι απόδειξη. Η σύγκριση που αξίζει να γίνει είναι ανάμεσα σε αυτό που υπόσχεται το όνομα και σε αυτό που επιλέγει πραγματικά η υπηρεσία.

Δύο απαντήσεις στο ίδιο ερώτημα

Το επιχείρημα της ετικέτας είναι εύκολο να διατυπωθεί: το SSTP περιγράφεται ως ασφαλές πρωτόκολλο σήραγγας μέσω υποδοχών, το ιστορικό όνομα λέει SSL, άρα η σύνδεση πρέπει να είναι SSL 3.0. Αντέχει επειδή το όνομα πράγματι προέρχεται από εκείνη τη γραμμή και επειδή οι περισσότεροι που το επαναλαμβάνουν δεν έχουν κοιτάξει ποτέ μια χειραψία. Αντέχει επίσης επειδή το συμπέρασμα ακούγεται προσεκτικό, σαν να ήταν η υπόθεση του χειρότερου η ασφαλής επιλογή. Το να υποθέτεις το χειρότερο και το να μετράς την πραγματική έκδοση είναι δύο διαφορετικές δραστηριότητες, και μόνο η μία αλλάζει κάτι.

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

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

Διάβασε την έκδοση που επιλέγει πραγματικά η υπηρεσία

Ξεκίνα ονομάζοντας τα συστατικά: την υλοποίηση πελάτη, την υλοποίηση διακομιστή, το τελικό σημείο TLS και ό,τι βρίσκεται ανάμεσά τους και τερματίζει και επανιδρύει το TLS. Ένας εξισορροπητής φόρτου που τερματίζει το TLS και μιλά απλό HTTP με το backend αλλάζει ποιας συσκευής την πολιτική πρέπει να διαβάσεις.

openssl s_client -connect vpn.example.com:443 -servername vpn.example.com </dev/null> | grep -E 'Protocol|Cipher'
Get-WinEvent -LogName System -ProviderName Schannel -MaxEvents 20

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

Χώρισε το πεδίο εγγραφής από τη διαπραγμάτευση

Ένας αριθμός έκδοσης που φαίνεται παλιός σε ένα πεδίο δεν είναι το ίδιο γεγονός με μια συνεδρία SSL 3.0. Το RFC 7568 αντιμετωπίζει την έκδοση του επιπέδου εγγραφής και το διαπραγματευμένο πρωτόκολλο ως ξεχωριστά ζητήματα, και ακριβώς από αυτή τη διάκριση προέρχονται οι σίγουρες λανθασμένες απαντήσεις. Διάβασε το διαπραγματευμένο πρωτόκολλο, μετά τον κρυπταλγόριθμο και μόνο τότε βγάλε συμπέρασμα για τη συνεδρία.

Το ίδιο έγγραφο είναι σαφές για το ίδιο το πρωτόκολλο: το SSL 3.0 δεν πρέπει να χρησιμοποιείται, και η διαπραγμάτευση ή η υποχώρηση σε αυτό απαγορεύονται. Ο λόγος είναι η σπασμένη κατασκευή CBC που εκμεταλλεύτηκε η επίθεση POODLE, και αυτό είναι ιδιότητα του πρωτοκόλλου, όχι διαμόρφωση μιας εφαρμογής.

Γι' αυτό το «αυτό το φορτίο είναι πιθανώς δύσκολο να εκμεταλλευτεί» δεν είναι επιχείρημα για να μείνει ενεργό το SSL 3.0. Η απαίτηση είναι να αφαιρεθεί το πρωτόκολλο, όχι να κερδηθεί μια συζήτηση για μία επίδειξη.

Απόσυρε το SSL 3.0 με μια πολιτική που μπορείς να υποστηρίξεις

Στα Windows οι ρυθμίσεις πρωτοκόλλου του Schannel βρίσκονται κάτω από το κλειδί Protocols και διαβάζονται ξεχωριστά για ρόλο πελάτη και ρόλο διακομιστή, γι' αυτό μια αλλαγή που διορθώνει τη μία κατεύθυνση μπορεί να αφήσει την άλλη ανέγγιχτη. Οι τρέχουσες ρυθμίσεις και οι απαιτήσεις επανεκκίνησής τους τεκμηριώνονται από τη Microsoft, και μια βιβλιοθήκη TLS τρίτου κατασκευαστή στον ίδιο κεντρικό υπολογιστή τις αγνοεί εντελώς.

Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server'
Get-ChildItem 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols'

Άλλαξε την πολιτική μέσω της υποστηριζόμενης διαδρομής διαχείρισης, επιβεβαίωσε ότι η υπηρεσία ιδιοκτήτης ξαναδιαβάζει τη διαμόρφωσή της και διατήρησε έναν εγκεκριμένο τρόπο επιστροφής. Το να επικολλήσεις ένα ευρύ σενάριο μητρώου από άλλο περιβάλλον είναι ο τρόπος με τον οποίο μια διόρθωση μιας υπηρεσίας γίνεται διακοπή για κάθε πελάτη TLS στο μηχάνημα. Η έκταση της επανεκκίνησης μετράει εδώ: μια ρύθμιση που φαίνεται εφαρμοσμένη μπορεί να κρατιέται ακόμη στη μνήμη από μια υπηρεσία που δεν την ξαναφόρτωσε.

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

Αποδέξου την αλλαγή με νέες συνδέσεις

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

Θυμήσου τι δεν καλύπτει η χειραψία. Το SSTP μεταφέρει έλεγχο ταυτότητας PPP μετά το επίπεδο TLS, άρα μια σύγχρονη έκδοση πρωτοκόλλου δεν λέει τίποτα για το ποιος χρήστης εξουσιοδοτήθηκε ή σε ποιους πόρους μπορεί να φτάσει η συνεδρία. Αυτά είναι ξεχωριστοί έλεγχοι με ξεχωριστές αποδείξεις.

Γράψε το αποτέλεσμα ως υπηρεσία, backend, επιτρεπόμενη πολιτική και παρατηρούμενη έκδοση. Ένα τέτοιο αρχείο απαντά με ακρίβεια στο ερώτημα ασφαλείας, κάτι που δεν κάνει ποτέ ούτε το επιχείρημα της ετικέτας ούτε το επιχείρημα της ενόχλησης.

Σχετικά άρθρα