Το OpenSSH 9.2 κυκλοφόρησε με επιδιόρθωση για ευπάθεια προ-έλεγχος ταυτότητας

Δημοσιεύτηκε η κυκλοφορία του OpenSSH 9.2, μια ανοιχτή υλοποίηση πελάτη και διακομιστή για εργασία με χρήση των πρωτοκόλλων SSH 2.0 και SFTP. Η νέα έκδοση εξαλείφει μια ευπάθεια που οδηγεί σε διπλή απελευθέρωση της μνήμης στο στάδιο προ-έλεγχος ταυτότητας. Επηρεάζεται μόνο η έκδοση OpenSSH 9.1, το πρόβλημα δεν εμφανίζεται σε προηγούμενες εκδόσεις.

Για να δημιουργηθούν συνθήκες για την εκδήλωση ευπάθειας, αρκεί να αλλάξετε το banner πελάτη SSH σε "SSH-2.0-FuTTYSH_9.1p1" για να ορίσετε τις σημαίες "SSH_BUG_CURVE25519PAD" και "SSH_OLD_DHGEX", οι οποίες εξαρτώνται από την έκδοση του SSH πελάτης. Μετά τη ρύθμιση αυτών των σημαιών, η μνήμη για την προσωρινή μνήμη "options.kex_algorithms" ελευθερώνεται δύο φορές - κατά την εκτέλεση της συνάρτησης do_ssh2_kex(), η οποία καλεί τη compat_kex_proposal(), και κατά την εκτέλεση της συνάρτησης do_authentication2(), η οποία καλεί την input_userauth_prequestwn(mm) ), copy_set_server_options() κατά μήκος της αλυσίδας , assemble_algorithms() και kex_assemble_names().

Η δημιουργία ενός λειτουργικού exploit για την ευπάθεια θεωρείται απίθανη, καθώς η διαδικασία εκμετάλλευσης είναι πολύ περίπλοκη - οι σύγχρονες βιβλιοθήκες εκχώρησης μνήμης παρέχουν προστασία έναντι της διπλής απελευθέρωσης της μνήμης και η διαδικασία προέγκρισης στην οποία υπάρχει το σφάλμα εκτελείται με μειωμένα δικαιώματα σε ένα απομονωμένο περιβάλλον sandbox.

Εκτός από τη σημειωθείσα ευπάθεια, η νέα έκδοση διορθώνει επίσης δύο ακόμη ζητήματα ασφαλείας:

  • Παρουσιάστηκε σφάλμα κατά την επεξεργασία της ρύθμισης "PermitRemoteOpen", με αποτέλεσμα το πρώτο όρισμα να αγνοηθεί εάν διαφέρει από τις τιμές "οποιοδήποτε" και "κανένα". Το πρόβλημα εμφανίζεται σε εκδόσεις νεότερες από το OpenSSH 8.7 και προκαλεί την παράβλεψη του ελέγχου όταν έχει καθοριστεί μόνο ένα δικαίωμα.
  • Ένας εισβολέας που ελέγχει τον διακομιστή DNS που χρησιμοποιείται για την επίλυση ονομάτων μπορεί να επιτύχει την αντικατάσταση ειδικών χαρακτήρων (για παράδειγμα, "*") σε αρχεία Known_hosts, εάν οι επιλογές CanonicalizeHostname και CanonicalizePermittedCNAMEs είναι ενεργοποιημένες στη διαμόρφωση και ο επιλύτης συστήματος δεν ελέγχει την ορθότητα του απαντήσεις από τον διακομιστή DNS. Η επίθεση θεωρείται απίθανη επειδή τα ονόματα που επιστρέφονται πρέπει να ταιριάζουν με τις συνθήκες που καθορίζονται μέσω των CanonicalizePermittedCNAMEs.

Άλλες αλλαγές:

  • Μια ρύθμιση EnableEscapeCommandline έχει προστεθεί στο ssh_config για ssh για να ελέγχει εάν είναι ενεργοποιημένη η επεξεργασία από την πλευρά του πελάτη της ακολουθίας διαφυγής "~C" που παρέχει τη γραμμή εντολών. Από προεπιλογή, ο χειρισμός "~C" είναι πλέον απενεργοποιημένος για τη χρήση αυστηρότερης απομόνωσης του sandbox, δυνητικά θραύση συστημάτων που χρησιμοποιούν "~C" για προώθηση θύρας κατά το χρόνο εκτέλεσης.
  • Η οδηγία ChannelTimeout έχει προστεθεί στο sshd_config για sshd για να οριστεί το χρονικό όριο αδράνειας καναλιού (τα κανάλια στα οποία δεν καταγράφεται κίνηση για το χρονικό διάστημα που καθορίζεται στην οδηγία θα κλείσουν αυτόματα). Μπορούν να οριστούν διαφορετικά χρονικά όρια για περίοδο λειτουργίας, X11, αντιπρόσωπο και ανακατεύθυνση επισκεψιμότητας.
  • Η οδηγία UnusedConnectionTimeout έχει προστεθεί στο sshd_config για sshd, επιτρέποντάς σας να ορίσετε ένα χρονικό όριο λήξης για τον τερματισμό των συνδέσεων πελάτη που ήταν χωρίς ενεργά κανάλια για ορισμένο χρονικό διάστημα.
  • Η επιλογή "-V" προστέθηκε στο sshd για να εμφανιστεί η έκδοση, παρόμοια με την παρόμοια επιλογή στο πρόγραμμα-πελάτη ssh.
  • Προστέθηκε η γραμμή "Host" στην έξοδο του "ssh -G", αντικατοπτρίζοντας την τιμή του ορίσματος ονόματος κεντρικού υπολογιστή.
  • Η επιλογή "-X" έχει προστεθεί στα scp και sftp για τον έλεγχο των παραμέτρων του πρωτοκόλλου SFTP, όπως το μέγεθος του buffer αντιγραφής και τον αριθμό των εκκρεμών αιτημάτων.
  • Το ssh-keyscan επιτρέπει τη σάρωση πλήρους εύρους διευθύνσεων CIDR, για παράδειγμα "ssh-keyscan 192.168.0.0/24".

Πηγή: opennet.ru

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