A apărut versiunea OpenSSH 9.2, o implementare deschisă a clientului și serverului pentru lucrul cu protocoalele SSH 2.0 și SFTP. În această versiune, a fost eliminată o vulnerabilitate care ducea la eliberarea dublă a memoriei înainte de autentificare. Vulnerabilitatea afectează doar versiunea OpenSSH 9.1; în versiunile anterioare, problema nu apare.
Pentru a crea condițiile de manifestare a vulnerabilității, este suficient să schimbi bannerul clientului SSH în „SSH-2.0-FuTTYSH_9.1p1” pentru a determina activarea flag-urilor „SSH_BUG_CURVE25519PAD” și „SSH_OLD_DHGEX”, care depind de versiunea clientului SSH. După activarea acestor flag-uri, memoria buffer-ului „options.kex_algorithms” este eliberată de două ori — o dată în timpul funcției do_ssh2_kex(), care apelează compat_kex_proposal(), și o dată în timpul funcției do_authentication2(), care apelează în lanț input_userauth_request(), mm_getpwnamallow(), copy_set_server_options(), assemble_algorithms() și kex_assemble_names().
Crearea unui exploat pe funcționalitatea de vulnerabilitate este considerată improbabilă, deoarece procesul de exploatare este complicat — bibliotecile moderne de gestionare a memoriei oferă protecție împotriva eliberării duble a memoriei, iar procesul pre-auth, în care există eroarea, se execută cu privilegii reduse într-un mediu izolat sandbox.
Pe lângă vulnerabilitatea menționată, în noua versiune au fost rezolvate și alte două probleme de securitate:
- O eroare în procesarea setării „PermitRemoteOpen”, care duce la ignorarea primului argument, dacă acesta diferă de valorile „any” și „none”. Problema apare în versiunile mai recente de OpenSSH 8.7 și duce la omisiunea verificării atunci când se specifică doar o singură autorizație.
- Un atacator care controlează serverul DNS utilizat pentru determinarea numelui poate obține înlocuirea caracterelor speciale (de exemplu, „*”) în fișierele known_hosts, dacă în configurare sunt activate opțiunile CanonicalizeHostname și CanonicalizePermittedCNAMEs, și rezolvatorul de sistem nu verifică corectitudinea răspunsurilor de la serverul DNS. Efectuarea atacului este considerată improbabilă, deoarece numele returnate trebuie să respecte condițiile stabilite prin CanonicalizePermittedCNAMEs.
Paleta de culori a fost modificată, oferind o separare mai contrastantă între text și fundal.
- În ssh_config pentru ssh a fost adăugată setarea EnableEscapeCommandline, care controlează activarea procesării pe partea clientului a secvențelor escape «~C», oferind o linie de comandă. Implicit, procesarea «~C» este acum dezactivată pentru a folosi o izolare mai strictă a sandbox-ului, ceea ce poate duce la probleme în sistemele unde «~C» este utilizat pentru redirecționarea porturilor în timpul execuției.
- În sshd_config pentru sshd a fost adăugată directiva ChannelTimeout pentru a stabili un timeout de inactivitate a canalului (canalele care nu au trafic în perioada specificată de directivă vor fi închise automat). Pentru sesiuni, X11, agenți și redirecționarea traficului pot fi stabilite timeout-uri diferite.
- În sshd_config pentru sshd a fost adăugată directiva UnusedConnectionTimeout, care permite stabilirea unui timeout pentru încheierea conexiunilor clientului care nu au canale active pentru o anumită perioadă de timp.
- În sshd a fost adăugată opțiunea «-V» pentru afișarea versiunii, similar cu o opțiune similară din clientul ssh.
- În ieșirea «ssh -G» a fost adăugată linia «Host», care reflectă valoarea argumentului cu numele gazdei.
- În scp și sftp a fost adăugată opțiunea «-X» pentru a gestiona parametrii protocolului SFTP, cum ar fi dimensiunea buffer-ului de copiere și numărul de solicitări în așteptare pentru finalizare.
- În ssh-keyscan a fost permisă scanarea de intervale CIDR complete, de exemplu, «ssh-keyscan 192.168.0.0/24».
Sursa: opennet.ro
