Objavljen je OpenSSH 9.2, otvorena implementacija klijent-servera za rad s protokolima SSH 2.0 i SFTP. U novoj verziji ispravljena je ranjivost koja dovodi do dvostrukog oslobađanja memorije u fazi prije autentifikacije. Ranjivost zahvaća samo verziju OpenSSH 9.1, dok se problem ne pojavljuje u starijim verzijama.
Za stvaranje uvjeta za pojavu ranjivosti dovoljno je promijeniti banner SSH klijenta na „SSH-2.0-FuTTYSH_9.1p1” kako bi se postavili flagovi „SSH_BUG_CURVE25519PAD” i „SSH_OLD_DHGEX”, koji ovise o verziji SSH klijenta. Nakon postavljanja ovih flagova, memorija za spremnik „options.kex_algorithms” oslobađa se dva puta — tijekom izvođenja funkcije do_ssh2_kex(), koja poziva compat_kex_proposal(), i tijekom izvođenja funkcije do_authentication2(), koja lančano poziva input_userauth_request(), mm_getpwnamallow(), copy_set_server_options(), assemble_algorithms() i kex_assemble_names().
Izrada funkcionalnog eksploita za ovu ranjivost smatra se malo vjerojatnom, budući da je proces eksploatacije previše složen — suvremene biblioteke za upravljanje memorijom pružaju zaštitu od dvostrukog oslobađanja memorije, a proces pre-auth, u kojem se nalazi greška, odvija se s smanjenim privilegijama u izoliranom sandbox okruženju.
Osim navedene ranjivosti, u novom izdanju ispravljena su još dva sigurnosna problema:
- Greška u obradi postavke „PermitRemoteOpen”, koja dovodi do ignoriranja prvog argumenta ako se razlikuje od vrijednosti „any” i „none”. Problem se pojavljuje u verzijama novijim od OpenSSH 8.7 i dovodi do propuštanja provjere prilikom navođenja samo jedne ovlasti.
- Napadač koji kontrolira DNS poslužitelj korišten za određivanje imena može postići umetanje posebnih znakova (npr. „*”) u datoteke known_hosts ako su u konfiguraciji omogućene opcije CanonicalizeHostname i CanonicalizePermittedCNAMEs, a sustavni rezolver ne provjerava točnost odgovora s DNS poslužitelja. Provođenje napada smatra se malo vjerojatnim jer vraćena imena moraju odgovarati uvjetima postavljenim putem CanonicalizePermittedCNAMEs.
Druge promjene:
- U ssh_config za ssh dodana je postavka EnableEscapeCommandline, koja kontrolira omogućavanje obrade na strani klijenta escape sekvenci «~C», koja pruža komandnu liniju. Zadovoljstvo ukazuje na to da je obrada «~C» sada onemogućena kako bi se koristila stroža sandbox izolacija, što može potencijalno uzrokovati probleme u sustavima u kojima se «~C» koristi za preusmjeravanje portova tijekom rada.
- U sshd_config za sshd dodana je direktiva ChannelTimeout za postavljanje vremenskog ograničenja neaktivnosti kanala (kanali u kojima za vrijeme navedeno u direktivi nije zabilježen promet, automatski će se zatvoriti). Za sesiju, X11, agenta i preusmjeravanje prometa mogu se postaviti različita vremenska ograničenja.
- U sshd_config za sshd dodana je direktiva UnusedConnectionTimeout, koja omogućuje postavljanje vremenskog ograničenja za završavanje klijentskih veza koje su određeno vrijeme bez aktivnih kanala.
- U sshd dodana je opcija «-V» za ispis verzije na sličan način kao slična opcija u klijentu ssh.
- U ispravci «ssh -G» dodan je redak «Host», koji odražava vrijednost argumenta s imenom hosta.
- U scp i sftp dodana je opcija «-X» za upravljanje parametrima SFTP protokola, kao što su veličina baferiranja kopiranja i broj čekajućih zahtjeva.
- U ssh-keyscan dopušteno je skeniranje punih CIDR raspona adresa, na primjer, «ssh-keyscan 192.168.0.0/24».
Izvor: opennet.ru
