Ανάλυση της ευπάθειας
Το κενό ασφαλείας εντοπίζεται στον τρόπο με τον οποίο το sshd (όταν είναι μεταγλωττισμένο χωρίς PAM) διαχειρίζεται τον έλεγχο ταυτότητας. Συγκεκριμένα, η βιβλιοθήκη crypt() της musl επιστρέφει το σύμβολο * ως ένδειξη σφάλματος όταν το εισαγόμενο password υπερβαίνει τα 256 bytes. Επειδή το * χρησιμοποιείται επίσης για να δηλώσει λογαριασμούς χωρίς κωδικό πρόσβασης, το sshd εσφαλμένα θεωρεί ότι το hash ταιριάζει, επιτρέποντας την είσοδο.
Προϋποθέσεις εκμετάλλευσης
Για να είναι ένα σύστημα ευάλωτο, πρέπει να συντρέχουν ταυτόχρονα οι εξής συνθήκες:
- Το
openssh-serverνα μην χρησιμοποιεί PAM (UsePAM no). - Η ρύθμιση
PasswordAuthenticationνα είναι ενεργοποιημένη. - Να υπάρχει τουλάχιστον ένας λογαριασμός με κωδικό πρόσβασης που χρησιμοποιεί hash τύπου
$5$ή$6$. - Να υπάρχει τουλάχιστον ένας λογαριασμός με κωδικό πρόσβασης ορισμένο ως
*(π.χ.rootή χρήστες χωρίς ορισμένο κωδικό).
Στρατηγική αποκατάστασης
Η άμεση αναβάθμιση μέσω apk upgrade -U -a είναι η προτεινόμενη λύση. Είναι κρίσιμο να σημειωθεί ότι η απλή εγκατάσταση του πακέτου δεν αρκεί· απαιτείται επανεκκίνηση της υπηρεσίας (rc-service sshd restart) για να φορτωθεί το διορθωμένο δυαδικό αρχείο στη μνήμη.
Σε περιβάλλοντα όπου η αναβάθμιση δεν είναι άμεσα εφικτή, η απενεργοποίηση του PasswordAuthentication στο sshd_config αποτελεί αποτελεσματική δικλείδα ασφαλείας. Προτείνεται η χρήση του καταλόγου /etc/ssh/sshd_config.d/ για την εφαρμογή της αλλαγής, διασφαλίζοντας ότι η πρόσβαση θα γίνεται αποκλειστικά μέσω SSH keys.