Το πιο πρόσφατο σε μια μακρά σειρά σφαλμάτων ασφαλείας για CPU, το Zenbleed είναι ένα ακόμη πράγμα που πρέπει να διορθωθεί. Εδώ είναι τι πρέπει να ξέρετε.
Μετά τη δημοσιοποίηση των εκμεταλλεύσεων της CPU Spectre και Meltdown το 2018, ο κόσμος των υπολογιστών ήταν αρκετά προσεκτικός σχετικά με την εύρεση σφαλμάτων ασφαλείας και κενών στους επεξεργαστές, και τα τελευταία πέντε χρόνια, οι ερευνητές έχουν βρει έναν τόνο. Στις 24 Ιουλίου, ένα ακόμη exploit αποκαλύφθηκε δημόσια, αφού αναφέρθηκε για πρώτη φορά τον Μάιο. Αυτή τη φορά, είναι ειδικά για επεξεργαστές AMD που έχουν κατασκευαστεί στην αρχιτεκτονική Zen 2 και ονομάζεται "Zenbleed". Εδώ είναι όλα όσα πρέπει να γνωρίζετε για το Zenbleed και τι σημαίνει για τον κόσμο.
Πώς λειτουργεί το Zenbleed;
Το Zenbleed είναι πολύ παρόμοιο με άλλα σφάλματα ασφαλείας που βασίζονται σε υλικό, όπως το Spectre, καθώς εκμεταλλεύεται την κερδοσκοπική ικανότητα των CPU. Προκειμένου να βελτιωθεί η απόδοση, οι CPU εικάζουν ή προβλέπουν το επόμενο πράγμα που πρέπει να κάνουν, και από τότε που αποκαλύφθηκε για πρώτη φορά το Spectre, ο κόσμος έμαθε ότι η εικασία μπορεί να είναι πολύ ανασφαλής αν γίνει ακατάλληλα.
Τα μητρώα σε μια CPU μπορούν να περιέχουν μια μικρή ποσότητα δεδομένων, συνήθως μια εντολή, μια διεύθυνση αποθήκευσης ή οποιοδήποτε άλλο είδος μικρών δεδομένων. Οι καταχωρητές XMM σε μια αρχιτεκτονική x86_64 (άρα, οποιοσδήποτε από τους επηρεασμένους επεξεργαστές Zen 2) μπορούν να χρησιμοποιηθούν μόνο για υπολογισμούς σε δεδομένα, όχι για διευθυνσιοδότηση μνήμης. Αυτό επεκτείνεται σε 256 bit στην περίπτωση καταχωρητών YMM και 512 bit σε καταχωρητές ZMM. Σε αυτήν την περίπτωση, το XMM αναφέρεται στα χαμηλότερα 128 bit του σύνολο 512 bit των καταχωρητών ZMM.
Αυτοί οι καταχωρητές είναι απίστευτα χρήσιμοι για πολλά διαφορετικά πράγματα, συμπεριλαμβανομένων των τυπικών συναρτήσεων C. Η ευπάθεια καταχράται την κερδοσκοπική εκτέλεση και τις λανθασμένες προβλέψεις διακλάδωσης για να αποσπάσει ουσιαστικά ένα τυχαίο κομμάτι δεδομένων από τη μνήμη, αλλά αυτά τα δεδομένα μπορούν να προέρχονται από Οτιδήποτε. Οι τυπικές συναρτήσεις βιβλιοθήκης C όπως το strlen, που μετρά το μήκος μιας συμβολοσειράς, μπορούν να χρησιμοποιήσουν αυτούς τους καταχωρητές για τη μετακίνηση δεδομένων και είναι πιθανό, κατά τύχη, ένας κωδικός πρόσβασης που χρησιμοποιείτε να έχει πέσει ατυχώς σε ένα από αυτά μητρώα.
Η πρόβλεψη κλάδου και η κερδοσκοπική εκτέλεση αναφέρονται σε γενικές γραμμές όταν ο υπολογιστής σας εκτελεί λειτουργίες που δεν χρειάζονται ακόμη, αλλά πιθανότατα θα χρειαστούν σε επόμενους κύκλους. Γίνεται συχνά σε περιόδους που το σύστημά σας έχει δωρεάν πόρους, καθώς επιταχύνει τη συνολική επεξεργασία όταν διαφορετικά οι οδηγίες ή τα δεδομένα δεν θα ήταν ακόμη έτοιμα για την CPU. Εάν η εργασία που έχει γίνει δεν είναι απαραίτητη, συνήθως απορρίπτεται και ο επεξεργαστής μπορεί να μεταπηδήσει πίσω στο σημείο που χρειάζεται για να εκτελέσει την επόμενη, σωστή, εντολή. Όταν το κάνει αυτό, αυτό ονομάζεται εσφαλμένη πρόβλεψη κλάδου.
Όπου προκύπτει ένα πρόβλημα είναι η εντολή vzeroupper, η οποία μηδενίζει τα bit στη θέση 128 και άνω των καταχωρητών YMM και ZMM. Αυτό γίνεται ιδιαίτερα κατά τη μετάβαση μεταξύ AVX και κώδικα SSE παλαιού τύπου, καθώς εξαλείφει την απόδοση ποινές που προκαλούνται από ψευδείς εξαρτήσεις, ενώ παράλληλα αποφεύγεται ένα αποτέλεσμα παρόμοιο με την προώθηση ακέραιων αριθμών ΝΤΟ.
Εάν ο επεξεργαστής εκτελεί υποθετικά μια εντολή vzeroupper, δεν υπάρχει σωστή επαναφορά. Ωστόσο, οι επηρεασμένοι επεξεργαστές Ryzen μπορεί να αναγκαστούν να ανακτήσουν από αυτό, αν και εσφαλμένα. Μόλις βρεθεί σε αυτήν την κατάσταση, το πρόγραμμα που εκτελείται αυτήν τη στιγμή μπορεί στη συνέχεια να κατασκοπεύσει αυτούς τους καταχωρητές σε πραγματικό χρόνο, προβάλλοντας δεδομένα που ρέουν σε όλο το σύστημα ανά πάσα στιγμή.
Ποιες CPU επηρεάζονται από το Zenbleed και πότε θα είναι διαθέσιμες οι ενημερώσεις κώδικα;
Όπως αναφέρθηκε προηγουμένως, μόνο οι CPU της AMD που βασίζονται στην αρχιτεκτονική Zen 2 είναι γνωστό ότι είναι ευάλωτοι στο σφάλμα ασφαλείας Zenbleed, αλλά η αρχιτεκτονική Zen 2 έχει τροφοδοτήσει CPU σε τρεις σειρές, καθιστώντας ακατάστατο το να καταλάβει κανείς ποιες CPU είναι ευάλωτες και ποιες δεν είναι. Ακολουθεί ένας πίνακας που πρέπει να τα κάνει όλα ξεκάθαρα:
Επηρεασμένες CPU | |
---|---|
Σειρά Ryzen 3000 |
Όλα εκτός από τις APU (π.χ. Ryzen 3 3200G) |
Επική Ρώμη |
Ολα |
Σειρά Ryzen 4000 |
Ολα |
Σειρά Ryzen 5000 |
Μόνο τα 5300U, 5500U και 5700U |
Ryzen 7000 Series |
Μόνο 7020 APU (π.χ. Ryzen 3 7320U) |
Πρόκειται για έναν αρκετά μεγάλο αριθμό επεξεργαστών AMD, και αυτοί είναι μόνο αυτοί που έχουν επιβεβαιωθεί μέχρι στιγμής. Το Zen 2 χρησιμοποιείται επίσης στις APU που τροφοδοτούν το Steam Deck, το Xbox Series S και X και το PS5. Δεν έχουμε ακούσει σε καμία περίπτωση εάν επηρεάζονται και αυτές οι CPU, αλλά κρίνοντας από τον τρόπο που λειτουργεί αυτό το exploit, θα εκπλαγώ αν δεν επηρεάζονταν επίσης. Φαίνεται απίθανο να το διορθώσει η AMD στο Xbox και στο PS5, καθώς επηρεάζονται και τα τσιπ της σειράς 7020, τα οποία είναι νεότερα.
Τη στιγμή της συγγραφής, ο μικροκώδικας έχει υποβληθεί στον πυρήνα του Linux που θα επιδιορθώσει αυτό το θέμα ευπάθειας και το λειτουργικό σας σύστημα ή το BIOS ενδέχεται να έχουν ήδη μια ενημέρωση που διορθώνει αυτό το πρόβλημα.
Τι σημαίνει αυτό για υπολογιστές που χρησιμοποιούν ευάλωτες CPU;
Αυτό είναι δύσκολο να απαντηθεί γιατί δεν είναι όλοι οι υπολογιστές ίσοι. Για τους κανονικούς ανθρώπους που χρησιμοποιούν απλά επιτραπέζιους υπολογιστές και φορητούς υπολογιστές παιχνιδιών, μάλλον δεν χρειάζεται να ανησυχείτε τόσο πολύ. Αυτό είναι ένα αρκετά περίπλοκο exploit και, παρόλο που είναι γνωστό πλέον στο κοινό, δεν υπάρχουν ακόμη γνωστά παραδείγματα εισβολέα που χρησιμοποιεί το Zenbleed για να χακάρει οτιδήποτε.
Ωστόσο, το διακύβευμα είναι πολύ υψηλότερο για τα κέντρα δεδομένων και τα σημαντικά άτομα που χειρίζονται ευαίσθητες πληροφορίες στους δικούς τους υπολογιστές. Υπάρχει ένας λόγος για τον οποίο η AMD ήταν πολύ σαφές ότι το Epyc Rome διορθώθηκε πριν δημοσιοποιηθεί η ευπάθεια: πολλά ευαίσθητα Οι πληροφορίες διαχειρίζονται οι CPU της Epyc και θα ήταν καταστροφή εάν οποιαδήποτε CPU που τροφοδοτούσε διακομιστές μεγάλης κλίμακας ήταν επιτυχής επιτέθηκε. Ο πυρήνας Linux 6.4.6 έχει ήδη κυκλοφορήσει και διορθώνει αυτήν την ευπάθεια μεταφέροντας το επίσημο έμπλαστρο μικροκώδικα από την AMD. Φαίνεται πιθανό ότι η Microsoft θα ενσωματώσει κάτι παρόμοιο στα Windows.
Με ανησυχίαν, Οι επίσημες ενημερώσεις κώδικα BIOS της AMD ενδέχεται να μην κυκλοφορήσουν για αρκετούς μήνες, στην οποία περίπτωση, υπάρχει ένα "μπουκιά κοτόπουλου" που μπορείτε να ορίσετε εάν χρησιμοποιείτε μηχανή Linux ή FreeBSD. Σε μηχανές Linux, μπορείτε να χρησιμοποιήσετε msr-tools και να εκτελέσετε την ακόλουθη εντολή.
wrmsr -a 0xc0011029 $(($(rdmsr -c 0xc0011029) | (1<<9)))
Στο FreeBSD, μπορείτε επίσης να χρησιμοποιήσετε τα ακόλουθα.
cpucontrol(8)
Η απενεργοποίηση του SMT δεν αρκεί για να μετριάσει την ευπάθεια.
Ένα πράγμα που κάνει το Zenbleed ιδιαίτερα κακό είναι ότι το Zen 2 ήταν μια από τις πιο δημοφιλείς αρχιτεκτονικές CPU της AMD. Ξεκίνησε την επιστροφή της AMD το 2019 και το 2020, και πολλοί άνθρωποι, εταιρείες και οργανισμοί εξακολουθούν να χρησιμοποιούν υπολογιστές με επεξεργαστές Zen 2 το 2023, ειδικά το Epyc Rome CPU. Αυτό δεν είναι τόσο κακό όσο το Spectre (το οποίο επηρεάζει σχεδόν όλους τους CPU πριν από το 2019) και το Meltdown (που επηρεάζει σχεδόν όλους τους επεξεργαστές Intel πριν από το 2019), αλλά εξακολουθεί να είναι αρκετά διαδεδομένη.
Οι ενημερώσεις κώδικα ασφαλείας για τρωτά σημεία όπως αυτό συχνά καταλήγουν σε ποινή απόδοσης, αλλά είπε η AMD Tom's Hardware ότι αυτή η ποινή θα εξαρτηθεί από την CPU και τον φόρτο εργασίας. Οι εικασίες και οι προβλέψεις ήταν πολύ σημαντικές για την απόδοση της CPU, επομένως δεν είναι σαφές εάν κάποια πιθανή διόρθωση θα δει σημαντική μείωση στην απόδοση.