Η υπερχείλιση buffer στο Toxcore γίνεται εκμετάλλευση με την αποστολή ενός πακέτου UDP

Το Toxcore, η υλοποίηση αναφοράς του πρωτοκόλλου ανταλλαγής μηνυμάτων Tox P2P, έχει μια ευπάθεια (CVE-2021-44847) που θα μπορούσε ενδεχομένως να ενεργοποιήσει την εκτέλεση κώδικα κατά την επεξεργασία ενός ειδικά δημιουργημένου πακέτου UDP. Όλοι οι χρήστες εφαρμογών που βασίζονται σε Toxcore που δεν έχουν απενεργοποιημένη τη μεταφορά UDP επηρεάζονται από την ευπάθεια. Για την επίθεση, αρκεί να στείλετε ένα πακέτο UDP γνωρίζοντας τη διεύθυνση IP, τη θύρα δικτύου και το δημόσιο κλειδί DHT του θύματος (αυτές οι πληροφορίες είναι δημόσια διαθέσιμες στο DHT, δηλαδή η επίθεση θα μπορούσε να πραγματοποιηθεί σε οποιονδήποτε χρήστη ή κόμβο DHT).

Το ζήτημα υπήρχε στις εκδόσεις toxcore 0.1.9 έως 0.2.12 και επιδιορθώθηκε στην έκδοση 0.2.13. Μεταξύ των εφαρμογών πελατών, μόνο το έργο qTox έχει κυκλοφορήσει μέχρι στιγμής μια ενημέρωση που εξαλείφει την ευπάθεια. Ως λύση ασφαλείας, μπορείτε να απενεργοποιήσετε το UDP ενώ διατηρείτε την υποστήριξη TCP.

Η ευπάθεια προκαλείται από μια υπερχείλιση buffer στη συνάρτηση handle_request(), η οποία προκύπτει λόγω εσφαλμένου υπολογισμού του μεγέθους δεδομένων σε ένα πακέτο δικτύου. Συγκεκριμένα, το μήκος των κρυπτογραφημένων δεδομένων προσδιορίστηκε στη μακροεντολή CRYPTO_SIZE, που ορίστηκε ως "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", η οποία στη συνέχεια χρησιμοποιήθηκε στην πράξη αφαίρεσης "μήκος - CRYPTO_SIZE". Λόγω της απουσίας παρενθέσεων στη μακροεντολή, αντί να αφαιρέσει το άθροισμα όλων των τιμών, αφαίρεσε 1 και πρόσθεσε τα υπόλοιπα μέρη. Για παράδειγμα, αντί για "μήκος - (1 + 32 * 2 + 24)", το μέγεθος της προσωρινής μνήμης υπολογίστηκε ως "μήκος - 1 + 32 * 2 + 24", το οποίο είχε ως αποτέλεσμα την αντικατάσταση δεδομένων στη στοίβα πέρα ​​από το όριο της προσωρινής μνήμης.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο