Ευπάθειες στο swhkd, έναν διαχειριστή συντομεύσεων για το Wayland

Εντοπίστηκε μια σειρά από τρωτά σημεία στο swhkd (Simple Wayland HotKey Daemon) που προκαλούνται από λανθασμένη εργασία με προσωρινά αρχεία, παραμέτρους γραμμής εντολών και υποδοχές Unix. Το πρόγραμμα είναι γραμμένο σε Rust και χειρίζεται το πάτημα πλήκτρων πρόσβασης σε περιβάλλοντα που βασίζονται στο πρωτόκολλο Wayland (ένα ανάλογο συμβατό με αρχείο διαμόρφωσης της διαδικασίας sxhkd που χρησιμοποιείται σε περιβάλλοντα που βασίζονται στο X11).

Το πακέτο περιλαμβάνει μια μη προνομιακή διαδικασία swhks που εκτελεί ενέργειες των πλήκτρων πρόσβασης και μια διαδικασία swhkd στο παρασκήνιο που εκτελείται ως root και αλληλεπιδρά με συσκευές εισόδου στο επίπεδο API uinput. Μια υποδοχή Unix χρησιμοποιείται για την οργάνωση της αλληλεπίδρασης μεταξύ swhks και swhkd. Χρησιμοποιώντας κανόνες Polkit, οποιοσδήποτε τοπικός χρήστης μπορεί να εκτελέσει τη διαδικασία /usr/bin/swhkd ως root και να της μεταβιβάσει αυθαίρετες παραμέτρους.

Εντοπίστηκαν τρωτά σημεία:

  • CVE-2022-27815 – Αποθήκευση ενός PID διεργασίας σε ένα αρχείο με προβλέψιμο όνομα και σε έναν κατάλογο που μπορεί να εγγραφεί από άλλους χρήστες (/tmp/swhkd.pid). Οποιοσδήποτε χρήστης μπορεί να δημιουργήσει ένα αρχείο /tmp/swhkd.pid και να βάλει το pid μιας υπάρχουσας διαδικασίας σε αυτό, κάτι που θα κάνει το swhkd να μην μπορεί να ξεκινήσει. Εάν δεν υπάρχει προστασία από τη δημιουργία συμβολικών συνδέσμων στο /tmp, η ευπάθεια μπορεί να χρησιμοποιηθεί για τη δημιουργία ή την αντικατάσταση αρχείων σε οποιονδήποτε κατάλογο συστήματος (το PID εγγράφεται στο αρχείο) ή για τον προσδιορισμό των περιεχομένων οποιουδήποτε αρχείου στο σύστημα (το swhkd εκτυπώνει το ολόκληρο το περιεχόμενο του αρχείου PID στο stdout). Αξίζει να σημειωθεί ότι στην επιδιόρθωση που κυκλοφόρησε το αρχείο PID δεν μετακινήθηκε στον κατάλογο /run, αλλά στον κατάλογο /etc (/etc/swhkd/runtime/swhkd_{uid}.pid), όπου επίσης δεν ανήκει.
  • CVE-2022-27814 – Με το χειρισμό της επιλογής γραμμής εντολών «-c» που χρησιμοποιείται για τον καθορισμό ενός αρχείου διαμόρφωσης, είναι δυνατό να προσδιοριστεί η ύπαρξη οποιουδήποτε αρχείου στο σύστημα. Για παράδειγμα, για να ελέγξετε το /root/.somefile μπορείτε να εκτελέσετε το "pkexec /usr/bin/swhkd -d -c /root/.somefile" και εάν το αρχείο λείπει, το σφάλμα "/root/.somefile δεν υπάρχει " θα εμφανιστεί. Όπως και στην περίπτωση της πρώτης ευπάθειας, η επίλυση του προβλήματος είναι αινιγματική - η επιδιόρθωση του προβλήματος συνοψίζεται στο γεγονός ότι το εξωτερικό βοηθητικό πρόγραμμα "cat" ('Command::new("/bin/cat")).arg(path) εκκινείται τώρα για την ανάγνωση του αρχείου διαμόρφωσης. output()').
  • CVE-2022-27819 – Το ζήτημα σχετίζεται επίσης με τη χρήση της επιλογής "-c", η οποία προκαλεί τη φόρτωση και την ανάλυση ολόκληρου του αρχείου διαμόρφωσης χωρίς έλεγχο του μεγέθους και του τύπου του αρχείου. Για παράδειγμα, για να προκαλέσετε άρνηση υπηρεσίας εξαντλώντας την ελεύθερη μνήμη και δημιουργώντας πλαστές εισόδους/εξόδους, μπορείτε να καθορίσετε μια συσκευή μπλοκ κατά την εκκίνηση ("pkexec /usr/bin/swhkd -d -c /dev/sda") ή μια συσκευή χαρακτήρων που παράγει μια άπειρη ροή δεδομένων. Το πρόβλημα επιλύθηκε με επαναφορά των δικαιωμάτων πριν από το άνοιγμα του αρχείου, αλλά η επιδιόρθωση δεν ολοκληρώθηκε, αφού μόνο το αναγνωριστικό χρήστη (UID) επαναφέρεται, αλλά το αναγνωριστικό ομάδας (GID) παραμένει το ίδιο.
  • CVE-2022-27818 – Μια υποδοχή Unix δημιουργείται χρησιμοποιώντας το αρχείο /tmp/swhkd.sock που δημιουργήθηκε σε έναν εγγράψιμο κατάλογο, το οποίο οδηγεί σε παρόμοια ζητήματα με το πρώτο θέμα ευπάθειας (κάθε χρήστης μπορεί να δημιουργήσει /tmp/swhkd.sock και να δημιουργήσει ή να υποκλέψει συμβάντα πατήματος πλήκτρων).
  • CVE-2022-27817 - Τα συμβάντα εισόδου γίνονται δεκτά από όλες τις συσκευές και σε όλες τις περιόδους λειτουργίας, π.χ. ένας χρήστης από άλλη περίοδο λειτουργίας Wayland ή από την κονσόλα μπορεί να παρεμποδίσει συμβάντα όταν πατηθούν πλήκτρα πρόσβασης από άλλους χρήστες.
  • CVE-2022-27816 Η διαδικασία swhks, όπως και το swhkd, χρησιμοποιεί το αρχείο PID /tmp/swhks.pid στον εγγράψιμο κατάλογο /tmp. Το πρόβλημα είναι παρόμοιο με το πρώτο θέμα ευπάθειας, αλλά δεν είναι τόσο επικίνδυνο επειδή το swhks εκτελείται κάτω από μη προνομιούχο χρήστη.

Πηγή: opennet.ru

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