Την περασμένη εβδομάδα, γράψαμε για ένα σωρό σφάλματα διαχείρισης μνήμης που επιδιορθώθηκαν στην τελευταία ενημέρωση ασφαλείας της δημοφιλούς βιβλιοθήκης κρυπτογράφησης OpenSSL.
Μαζί με αυτά τα σφάλματα μνήμης, αναφέραμε επίσης ένα σφάλμα μεταγλωττισμένο CVE-2022-4304: Timing Oracle σε αποκρυπτογράφηση RSA.
Σε αυτό το σφάλμα, η εκτόξευση του ίδιου κρυπτογραφημένου μηνύματος ξανά και ξανά σε έναν διακομιστή, αλλά η τροποποίηση της συμπλήρωσης στο τέλος των δεδομένων για να καταστήσει τα δεδομένα άκυρα, προκαλώντας έτσι κάποιου είδους απρόβλεπτη συμπεριφορά…
…δεν θα χρειαζόταν σταθερό χρόνο, υποθέτοντας ότι ήσασταν κοντά στον στόχο στο δίκτυο που θα μπορούσατε να μαντέψετε αξιόπιστα πόσο χρόνο θα διαρκούσε το μέρος της διαδικασίας μεταφοράς δεδομένων.
Δεν επεξεργάζονται όλα τα δεδομένα εξίσου
Εάν ενεργοποιήσετε ένα αίτημα, χρόνο πόσο διαρκεί η απάντηση και αφαιρέσετε τον χρόνο που καταναλώνεται για την αποστολή και λήψη δεδομένων δικτύου χαμηλού επιπέδου, γνωρίζετε πόσο χρόνο χρειάστηκε ο διακομιστής για να κάνει τον εσωτερικό του υπολογισμό για να επεξεργαστεί το αίτημα .
Ακόμα κι αν δεν είστε βέβαιοι πόσος χρόνος καταναλώνεται στο δίκτυο, μπορείτε να αναζητήσετε παραλλαγές στους χρόνους μετ' επιστροφής απορρίπτοντας πολλά αιτήματα και συλλέγοντας πολλά δείγματα.
Εάν το δίκτυο είναι αρκετά αξιόπιστο ώστε να υποθέσει ότι η επιβάρυνση του δικτύου είναι σε μεγάλο βαθμό σταθερή, ίσως μπορείτε να χρησιμοποιήσετε στατιστικές μεθόδους για να συμπεράνετε ποιο είδος τροποποίησης δεδομένων προκαλεί τι είδους επιπλέον καθυστέρηση επεξεργασίας.
Από αυτό, πολλοί είστε σε θέση να συμπεράνετε κάτι σχετικά με τη δομή, ή ακόμα και το περιεχόμενο, των αρχικών μη κρυπτογραφημένων δεδομένων που υποτίθεται ότι κρατούνται μυστικά σε κάθε επαναλαμβανόμενο αίτημα.
Ακόμα κι αν μπορείτε να εξαγάγετε μόνο ένα byte απλού κειμένου, αυτό δεν υποτίθεται ότι συμβαίνει.
Τα λεγόμενα επιθέσεις συγχρονισμού αυτού του είδους είναι πάντα ενοχλητικό, ακόμα κι αν χρειαστεί να στείλετε εκατομμύρια πλαστά πακέτα και να τα χρονομετρήσετε όλα για να έχετε πιθανότητες να ανακτήσετε μόνο ένα byte δεδομένων απλού κειμένου…
…επειδή τα δίκτυα είναι πιο γρήγορα, πιο προβλέψιμα και ικανά να χειριστούν πολύ περισσότερο φορτίο από ό,τι πριν από λίγα χρόνια.
Μπορεί να πιστεύετε ότι εκατομμύρια δόλια πακέτα που σας στέλνουν ανεπιθύμητα μηνύματα, ας πούμε, την επόμενη ώρα θα ξεχώριζαν σαν αντίχειρας.
Αλλά "ένα εκατομμύριο πακέτα την ώρα περισσότερο ή λιγότερο από το συνηθισμένο" απλά δεν είναι πλέον μια ιδιαίτερα μεγάλη παραλλαγή.
Παρόμοιο σφάλμα "oracle" στο GnuTLS
Λοιπόν, το ίδιο άτομο που ανέφερε το σφάλμα χρονισμού σφάλματος που διορθώθηκε επιτέλους στο OpenSSL ανέφερε επίσης ένα παρόμοιο σφάλμα στο GnuTLS περίπου την ίδια στιγμή.
Αυτό έχει το αναγνωριστικό σφάλματος CVE-2023-0361.
Αν και το GnuTLS δεν είναι τόσο δημοφιλές ή ευρέως χρησιμοποιούμενο όσο το OpenSSL, πιθανότατα έχετε πολλά προγράμματα στο IT σας ή ακόμα και στον υπολογιστή σας που το χρησιμοποιούν ή το περιλαμβάνουν, συμπεριλαμβανομένων πιθανώς FFmpeg, GnuPG, Mplayer, QEMU , Rdesktop, Samba, Wget και Wireshark.
Κατά ειρωνικό τρόπο, το σφάλμα χρονισμού στο GnuTLS εμφανίστηκε σε κώδικα που υποτίθεται ότι καταγράφει αρχικά σφάλματα χρονομέτρησης.
Όπως μπορείτε να δείτε από τη διαφορά κώδικα (Diff) παρακάτω, ο προγραμματιστής γνώριζε ότι οποιαδήποτε υπό όρους (if ... then
) η λειτουργία που χρησιμοποιείται για τον έλεγχο και την αντιμετώπιση ενός σφάλματος αποκρυπτογράφησης μπορεί να προκαλέσει διακυμάνσεις χρονισμού, επειδή οι CPU γενικά χρειάζονται διαφορετικό χρόνο ανάλογα με τον τρόπο με τον οποίο ο κώδικάς σας πηγαίνει μετά από μια εντολή "διακλάδωσης".
(Αυτό ισχύει ιδιαίτερα για έναν κλάδο που συχνά πηγαίνει προς τη μία κατεύθυνση και σπάνια προς την άλλη, επειδή οι CPU τείνουν να θυμούνται ή να αποθηκεύουν προσωρινά τον κώδικα που εκτελείται επανειλημμένα για να βελτιώσουν την απόδοση, κάνοντας έτσι τον κώδικα που λαμβάνεται σπάνια να εκτελείται αισθητά πιο αργό.)
Αλλά ο προγραμματιστής ήθελε ακόμα να καταγράψει ότι μπορεί να συμβεί μια επίθεση, κάτι που συμβαίνει εάν το if (ok)
Το παραπάνω τεστ αποτυγχάνει και διακλαδίζεται στο else { ... }
τμήμα.
Σε αυτό το σημείο, ο κωδικός καλεί το _gnutls_debug_log()
λειτουργία, η οποία θα μπορούσε να πάρει αρκετό χρόνο για να κάνει τη δουλειά της.
Επομένως, ο κωδικοποιητής εισήγαγε μια σκόπιμη κλήση στο _gnutls_no_log()
στο then { ... }
μέρος του κώδικα, το οποίο προσποιείται ότι καταγράφει μια «επίθεση» όταν δεν υπάρχει, προκειμένου να προσπαθήσει να εξισορροπήσει τον χρόνο που ξοδεύει ο κώδικας προς οποιαδήποτε κατεύθυνση που if (ok)
μπορεί να λάβει η οδηγία υποκαταστήματος.
Προφανώς, ωστόσο, οι δύο διαδρομές κώδικα δεν ήταν αρκετά παρόμοιες στο χρόνο που εξαντλήθηκαν (ή ίσως το _gnutls_debug_log()
Η λειτουργία από μόνη της ήταν ανεπαρκώς συνεπής στην αντιμετώπιση διαφορετικών ειδών σφαλμάτων) και ένας εισβολέας μπορούσε να αρχίσει να διακρίνει τις ενδείξεις αποκρυπτογράφησης μετά από ένα εκατομμύριο περίπου προσπάθειες.
Τι να κάνω;
Εάν είστε προγραμματιστής: η διόρθωση σφαλμάτων εδώ ήταν απλή και ακολουθούσε την αρχή "λιγότερο είναι περισσότερο".
Ο κώδικας με το ροζ παραπάνω, ο οποίος θεωρήθηκε ότι δεν παρέχει τρομερά χρήσιμα δεδομένα ανίχνευσης επίθεσης, απλώς διαγράφηκε, με την αιτιολογία ότι ο κώδικας που δεν υπάρχει δεν μπορεί να μεταγλωττιστεί κατά λάθος, ανεξάρτητα από τις ρυθμίσεις κατασκευής σας…
…και ο κώδικας που δεν έχει μεταγλωττιστεί δεν μπορεί ποτέ να εκτελεστεί, είτε τυχαία είτε σχεδιασμένος.
Εάν είστε χρήστης GnuTLS: την έκδοση που κυκλοφόρησε πρόσφατα 3.7.9 και τη "γεύση του νέου προϊόντος" 3.8.0 συμπεριλάβετε αυτήν την επιδιόρθωση, μαζί με διάφορες άλλες.
Εάν εκτελείτε διανομή Linux, ελέγξτε για ενημερώσεις σε οποιαδήποτε κεντρικά διαχειριζόμενη έκδοση κοινόχρηστης βιβλιοθήκης του GnuTLS που διαθέτετε, καθώς και για εφαρμογές που διαθέτουν τη δική τους έκδοση.
Στο Linux, αναζητήστε αρχεία με το όνομα libgnutls*.so
για να βρείτε τυχόν κοινόχρηστες βιβλιοθήκες και να αναζητήσετε gnutls-cli
για να βρείτε τυχόν αντίγραφα του βοηθητικού προγράμματος της γραμμής εντολών που περιλαμβάνεται συχνά στη βιβλιοθήκη.
Μπορείτε να τρέξετε gnutls-cli -vv
για να μάθετε ποια έκδοση του libgnutls
συνδέεται δυναμικά με:
$ gnutls-cli -vv gnutls-cli 3.7.9 <-- η διανομή Linux μου έλαβε την ενημέρωση την περασμένη Παρασκευή (2023-02-10)
- SEO Powered Content & PR Distribution. Ενισχύστε σήμερα.
- Platoblockchain. Web3 Metaverse Intelligence. Ενισχύθηκε η γνώση. Πρόσβαση εδώ.
- πηγή: https://nakedsecurity.sophos.com/2023/02/13/serious-security-gnutls-follows-openssl-fixes-timing-attack-bug/
- 1
- 7
- 70
- 9
- a
- Ικανός
- Σχετικά
- πάνω από
- Απόλυτος
- ατύχημα
- Μετά το
- κατά
- Όλα
- πάντοτε
- ποσό
- και
- απάντηση
- Εμφανίστηκε
- εφαρμογές
- γύρω
- επίθεση
- συγγραφέας
- αυτόματη
- background-image
- επειδή
- παρακάτω
- σύνορο
- Κάτω μέρος
- Υποκατάστημα
- υποκαταστήματα
- φέρω
- Έντομο
- σφάλματα
- χτίζω
- τσαμπί
- κρύπτη
- κλήση
- κλήσεις
- ικανός
- αίτια
- Κέντρο
- ευκαιρία
- έλεγχος
- έλεγχος
- Κλεισιμο
- κωδικός
- κωδικοποιητή
- Συλλέγοντας
- χρώμα
- υπολογισμός
- υπολογιστή
- συνεπής
- σταθερός
- καταναλώνεται
- περιεχόμενο
- θα μπορούσε να
- κάλυμμα
- ημερομηνία
- μοιρασιά
- delay
- Σε συνάρτηση
- Υπηρεσίες
- Ανίχνευση
- διαφορά
- διαφορετικές
- κατεύθυνση
- Display
- διακρίνω
- μεταγλωττισμένο
- δυναμικά
- κάθε
- είτε
- κρυπτογραφημένα
- κρυπτογράφηση
- αρκετά
- σφάλμα
- λάθη
- ειδικά
- περιουσία
- Even
- επιπλέον
- εκχύλισμα
- αποτυγχάνει
- γρηγορότερα
- λίγοι
- Αρχεία
- Εύρεση
- Φωτιά
- ψήσιμο
- Όνομα
- σταθερός
- καθορίζεται
- ελάττωμα
- ακολουθείται
- εξής
- Παρασκευή
- από
- λειτουργία
- γενικά
- Δώστε
- τσούχτρες
- πηγαίνει
- λόγους
- Χειρισμός
- συμβαίνω
- συμβαίνει
- ύψος
- εδώ
- φτερουγίζω
- Πως
- Ωστόσο
- HTTPS
- αναγνωριστικό
- βελτίωση
- in
- περιλαμβάνουν
- περιλαμβάνονται
- Συμπεριλαμβανομένου
- εσωτερικός
- IT
- μόνο ένα
- Ξέρω
- large
- σε μεγάλο βαθμό
- Επίθετο
- αργότερο
- βιβλιοθήκες
- Βιβλιοθήκη
- γραμμή
- συνδέονται
- linux
- φορτίο
- φορτία
- Μακριά
- ματιά
- κάνω
- Κατασκευή
- διαχείριση
- πολοί
- Περιθώριο
- max-width
- Μνήμη
- μήνυμα
- μέθοδοι
- ενδέχεται να
- εκατομμύριο
- εκατομμύρια
- λάθος
- περισσότερο
- όνομα
- Ανάγκη
- δίκτυο
- Δεδομένα δικτύου
- δικτύωσης
- δίκτυα
- επόμενη
- κανονικός
- αριθμός
- ONE
- OpenSSL
- λειτουργία
- μαντείο
- τάξη
- πρωτότυπο
- ΑΛΛΑ
- Άλλα
- δική
- πακέτα
- μέρος
- ιδιαίτερα
- Παύλος
- επίδοση
- ίσως
- person
- Μέρος
- Απλό κείμενο
- Πλάτων
- Πληροφορία δεδομένων Plato
- Πλάτωνα δεδομένα
- Σημείο
- Δημοφιλής
- θέση
- Δημοσιεύσεις
- Αναμενόμενος
- αρχή
- πιθανώς
- διαδικασια μας
- μεταποίηση
- παράγει
- Προϊόν
- Προγραμματιστής
- Προγράμματα
- ανάκτηση
- Ανεξάρτητα
- αξιόπιστος
- θυμάμαι
- επανειλημμένες
- ΚΑΤ 'ΕΠΑΝΑΛΗΨΗ
- αναφέρθηκαν
- ζητήσει
- αιτήματα
- RSA
- τρέξιμο
- τρέξιμο
- Σάμπα
- ίδιο
- Αναζήτηση
- Μυστικό
- Τμήμα
- ασφάλεια
- ενημερωμένη έκδοση ασφαλείας
- σπάνια
- σοβαρός
- Shared
- παρόμοιες
- Απλούς
- απλά
- So
- στέρεο
- μερικοί
- κάτι
- σταθεί
- στατιστικός
- Ακόμη
- δομή
- υποτιθεμένος
- SVG
- Πάρτε
- παίρνει
- στόχος
- δοκιμή
- Η
- τους
- Νομίζω
- ώρα
- φορές
- συγχρονισμός
- προς την
- κορυφή
- μεταφορά
- μετάβαση
- διαφανής
- αληθής
- απρόβλεπτος
- Ενημέρωση
- ενημερώσεις
- URL
- χρήση
- Χρήστες
- χρησιμότητα
- διάφορα
- εκδοχή
- ήθελε
- εβδομάδα
- Τι
- αν
- Ποιό
- ενώ
- Ο ΟΠΟΊΟΣ
- Εργασία
- θα
- χρόνια
- Σας
- zephyrnet