Κλείσιμο διαφήμισης

Πριν λίγες μέρες η Apple κυκλοφόρησε το εκατοστό Ενημέρωση iOS 7.0.6, για την κυκλοφορία του οποίου σας ενημερώσαμε. Πολλοί μπορεί να εκπλήσσονταν που η ενημέρωση κυκλοφόρησε και για παλαιότερο iOS 6 (έκδοση 6.1.6) και Apple TV (έκδοση 6.0.2). Αυτή είναι μια ενημερωμένη έκδοση κώδικα ασφαλείας, επομένως η Apple δεν είχε την πολυτέλεια να ενημερώσει μόνο ένα μέρος των συσκευών της. Επιπλέον, αυτό το ζήτημα επηρεάζει επίσης το OS X. Σύμφωνα με τον εκπρόσωπο της Apple, Trudy Muller, μια ενημέρωση του OS X θα κυκλοφορήσει το συντομότερο δυνατό.

Γιατί υπάρχει τόση διαφημιστική εκστρατεία γύρω από αυτήν την ενημέρωση; Ένα ελάττωμα στον κώδικα του συστήματος επιτρέπει την παράκαμψη της επαλήθευσης διακομιστή κατά την ασφαλή μετάδοση στο σχεσιακό επίπεδο του μοντέλου αναφοράς ISO/OSI. Συγκεκριμένα, το σφάλμα είναι μια κακή υλοποίηση SSL στο τμήμα όπου πραγματοποιείται η επαλήθευση πιστοποιητικού διακομιστή. Πριν προχωρήσω σε περαιτέρω επεξήγηση, προτιμώ να περιγράψω τις βασικές έννοιες.

Το SSL (Secure Socket Layer) είναι ένα πρωτόκολλο που χρησιμοποιείται για ασφαλή επικοινωνία. Επιτυγχάνει ασφάλεια μέσω κρυπτογράφησης και πιστοποίησης ταυτότητας των μερών που επικοινωνούν. Ο έλεγχος ταυτότητας είναι η επαλήθευση της ταυτότητας που παρουσιάζεται. Στην πραγματική ζωή, για παράδειγμα, λέτε το όνομά σας (ταυτότητα) και δείχνετε την ταυτότητά σας για να μπορεί ο άλλος να το επαληθεύσει (να ελέγξει την ταυτότητα). Στη συνέχεια, ο έλεγχος ταυτότητας χωρίζεται σε επαλήθευση, η οποία είναι απλώς ένα παράδειγμα με εθνική ταυτότητα ή ταυτότητα, όταν το εν λόγω άτομο μπορεί να καθορίσει την ταυτότητά σας χωρίς να του την παρουσιάσετε εκ των προτέρων.

Τώρα θα πάω εν συντομία στο πιστοποιητικό διακομιστή. Στην πραγματική ζωή, το πιστοποιητικό σας θα μπορούσε να είναι, για παράδειγμα, μια ταυτότητα. Όλα βασίζονται στην ασύμμετρη κρυπτογραφία, όπου κάθε υποκείμενο έχει δύο κλειδιά - ιδιωτικό και δημόσιο. Η όλη ομορφιά έγκειται στο γεγονός ότι το μήνυμα μπορεί να κρυπτογραφηθεί με το δημόσιο κλειδί και να αποκρυπτογραφηθεί με το ιδιωτικό κλειδί. Αυτό σημαίνει ότι μόνο ο κάτοχος του ιδιωτικού κλειδιού μπορεί να αποκρυπτογραφήσει το μήνυμα. Ταυτόχρονα, δεν υπάρχει λόγος ανησυχίας για τη μεταφορά του μυστικού κλειδιού και στα δύο μέρη που επικοινωνούν. Στη συνέχεια, το πιστοποιητικό είναι το δημόσιο κλειδί του υποκειμένου που συμπληρώνεται με τις πληροφορίες του και υπογράφεται από την αρχή πιστοποίησης. Στην Τσεχική Δημοκρατία, μία από τις αρχές πιστοποίησης είναι, για παράδειγμα, η Česká Pošta. Χάρη στο πιστοποιητικό, το iPhone μπορεί να επαληθεύσει ότι πραγματικά επικοινωνεί με τον συγκεκριμένο διακομιστή.

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

static OSStatus
SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa,
SSLBuffer signedParams, uint8_t *signature, UInt16 signatureLen)

{
   OSStatus err;
   …

   if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
       goto fail;
   if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
       goto fail;
       goto fail;
   if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
       goto fail;
   …

fail:
   SSLFreeBuffer(&signedHashes);
   SSLFreeBuffer(&hashCtx);
   return err;
}

Στη δεύτερη συνθήκη if μπορείτε να δείτε δύο εντολές παρακάτω Πρέπει να αποτύχει?. Και αυτό είναι το εμπόδιο. Αυτός ο κώδικας προκαλεί στη συνέχεια την εκτέλεση της δεύτερης εντολής στο στάδιο που πρέπει να επαληθευτεί το πιστοποιητικό Πρέπει να αποτύχει?. Αυτό προκαλεί την παράλειψη της τρίτης συνθήκης if και δεν θα υπάρχει καθόλου επαλήθευση διακομιστή.

Οι συνέπειες είναι ότι οποιοσδήποτε γνωρίζει αυτήν την ευπάθεια μπορεί να προσφέρει στο iPhone σας ένα ψεύτικο πιστοποιητικό. Εσύ ή Το iPhone σας, θα νομίζετε ότι επικοινωνείτε κρυπτογραφημένα, ενώ υπάρχει ένας εισβολέας μεταξύ εσάς και του διακομιστή. Μια τέτοια επίθεση ονομάζεται η επίθεση στον άνθρωπο στη μέση, που μεταφράζεται χονδρικά στα τσεχικά ως επίθεση άνθρωπος στη μέση ή άνθρωπος μεταξύ. Μια επίθεση που χρησιμοποιεί αυτό το συγκεκριμένο ελάττωμα σε OS X και iOS μπορεί να εκτελεστεί μόνο εάν ο εισβολέας και το θύμα βρίσκονται στο ίδιο δίκτυο. Επομένως, είναι καλύτερο να αποφύγετε τα δημόσια δίκτυα Wi-Fi εάν δεν έχετε ενημερώσει το iOS σας. Οι χρήστες Mac θα πρέπει ακόμα να προσέχουν σε ποια δίκτυα συνδέονται και σε ποιους ιστότοπους επισκέπτονται σε αυτά τα δίκτυα.

Δεν μπορούμε να πιστέψουμε πώς ένα τέτοιο μοιραίο σφάλμα θα μπορούσε να μπει στις τελικές εκδόσεις του OS X και του iOS. Θα μπορούσε να ήταν ασυνεπής δοκιμή κακώς γραμμένου κώδικα. Αυτό θα σήμαινε ότι τόσο ο προγραμματιστής όσο και οι δοκιμαστές θα έκαναν λάθη. Αυτό μπορεί να φαίνεται απίθανο για την Apple, και έτσι βγαίνουν εικασίες ότι αυτό το σφάλμα είναι στην πραγματικότητα μια κερκόπορτα, το λεγόμενο. πίσω πόρτα. Δεν είναι άδικο που λένε ότι οι καλύτερες κερκόπορτες μοιάζουν με διακριτικά λάθη. Ωστόσο, αυτές είναι μόνο μη επιβεβαιωμένες θεωρίες, επομένως θα υποθέσουμε ότι κάποιος έκανε απλώς ένα λάθος.

Εάν δεν είστε βέβαιοι εάν το σύστημα ή το πρόγραμμα περιήγησής σας έχει ανοσία σε αυτό το σφάλμα, επισκεφτείτε τη σελίδα gotofail.com. Όπως μπορείτε να δείτε στις παρακάτω εικόνες, το Safari 7.0.1 στο OS X Mavericks 10.9.1 περιέχει ένα σφάλμα, ενώ στο Safari στο iOS 7.0.6 όλα είναι καλά.

Πόροι: iMore, Reuters
.