Τρωτά σημεία στον πυρήνα του Linux που γίνεται απομακρυσμένη εκμετάλλευση μέσω Bluetooth

Εντοπίστηκε μια ευπάθεια (CVE-2022-42896) στον πυρήνα του Linux, η οποία μπορεί ενδεχομένως να χρησιμοποιηθεί για την οργάνωση της απομακρυσμένης εκτέλεσης κώδικα σε επίπεδο πυρήνα, στέλνοντας ένα ειδικά σχεδιασμένο πακέτο L2CAP μέσω Bluetooth. Επιπλέον, ένα άλλο παρόμοιο ζήτημα έχει εντοπιστεί (CVE-2022-42895) στον χειριστή L2CAP, το οποίο μπορεί να οδηγήσει σε διαρροή των περιεχομένων της μνήμης του πυρήνα σε πακέτα με πληροφορίες διαμόρφωσης. Η πρώτη ευπάθεια εμφανίζεται από τον Αύγουστο του 2014 (πυρήνας 3.16) και η δεύτερη από τον Οκτώβριο του 2011 (πυρήνας 3.0). Τα τρωτά σημεία έχουν αντιμετωπιστεί στις εκδόσεις του πυρήνα Linux 6.1.0, 6.0.8, 4.9.333, 4.14.299, 4.19.265, 5.4.224, 5.10.154 και 5.15.78. Μπορείτε να παρακολουθείτε τις διορθώσεις σε διανομές στις ακόλουθες σελίδες: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Για να αποδειχθεί η δυνατότητα πραγματοποίησης μιας απομακρυσμένης επίθεσης, έχουν δημοσιευτεί πρωτότυπα exploit που λειτουργούν στο Ubuntu 22.04. Για να πραγματοποιήσει μια επίθεση, ο εισβολέας πρέπει να βρίσκεται εντός του εύρους Bluetooth—δεν απαιτείται προ-σύζευξη, αλλά το Bluetooth πρέπει να είναι ενεργό στον υπολογιστή. Για μια επίθεση, αρκεί να γνωρίζετε τη διεύθυνση MAC της συσκευής του θύματος, η οποία μπορεί να προσδιοριστεί με sniffing ή, σε ορισμένες συσκευές, να υπολογιστεί με βάση τη διεύθυνση MAC Wi-Fi.

Η πρώτη ευπάθεια (CVE-2022-42896) προκαλείται από την πρόσβαση σε μια ήδη ελευθερωμένη περιοχή μνήμης (use-after-free) κατά την υλοποίηση των λειτουργιών l2cap_connect και l2cap_le_connect_req - μετά τη δημιουργία ενός καναλιού μέσω της επανάκλησης new_connection, δεν ορίστηκε κλείδωμα για αυτό, αλλά ορίστηκε ένα χρονόμετρο (__set_chan_timer ), μετά τη λήξη του χρονικού ορίου, καλώντας τη συνάρτηση l2cap_chan_timeout και εκκαθαρίζοντας το κανάλι χωρίς να ελεγχθεί η ολοκλήρωση της εργασίας με το κανάλι στις συναρτήσεις l2cap_le_connect*.

Το προεπιλεγμένο χρονικό όριο είναι 40 δευτερόλεπτα και θεωρήθηκε ότι μια συνθήκη αγώνα δεν θα μπορούσε να συμβεί με τέτοια καθυστέρηση, αλλά αποδείχθηκε ότι λόγω ενός άλλου σφάλματος στον χειριστή SMP, ήταν δυνατό να επιτευχθεί μια άμεση κλήση στο χρονόμετρο και να επιτευχθεί μια κατάσταση του αγώνα. Ένα πρόβλημα στο l2cap_le_connect_req μπορεί να οδηγήσει σε διαρροή μνήμης πυρήνα και στο l2cap_connect μπορεί να οδηγήσει σε αντικατάσταση των περιεχομένων της μνήμης και εκτέλεση του κώδικά της. Ο πρώτος τύπος επίθεσης μπορεί να πραγματοποιηθεί χρησιμοποιώντας Bluetooth LE 4.0 (από το 2009), ο δεύτερος όταν χρησιμοποιείται Bluetooth BR/EDR 5.2 (από το 2020).

Η δεύτερη ευπάθεια (CVE-2022-42895) προκαλείται από μια υπολειπόμενη διαρροή μνήμης στη συνάρτηση l2cap_parse_conf_req, η οποία μπορεί να χρησιμοποιηθεί για την απομακρυσμένη λήψη πληροφοριών σχετικά με δείκτες σε δομές πυρήνα, στέλνοντας ειδικά κατασκευασμένα αιτήματα διαμόρφωσης. Η συνάρτηση l2cap_parse_conf_req χρησιμοποιούσε τη δομή l2cap_conf_efs, για την οποία η εκχωρηθείσα μνήμη δεν είχε εκ των προτέρων αρχικοποιηθεί και με το χειρισμό της σημαίας FLAG_EFS_ENABLE ήταν δυνατό να συμπεριληφθούν παλιά δεδομένα από τη στοίβα στο πακέτο. Το πρόβλημα εμφανίζεται μόνο σε συστήματα όπου ο πυρήνας είναι χτισμένος με την επιλογή CONFIG_BT_HS (απενεργοποιημένη από προεπιλογή, αλλά ενεργοποιημένη σε ορισμένες διανομές, όπως το Ubuntu). Μια επιτυχημένη επίθεση απαιτεί επίσης τη ρύθμιση της παραμέτρου HCI_HS_ENABLED μέσω της διεπαφής διαχείρισης σε true (δεν χρησιμοποιείται από προεπιλογή).

Πηγή: opennet.ru

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