Haavatavus GSSAPI-patchis OpenSSH-s, mida saab kaugelt ära kasutada enne autentimist

Paljudes Linuxi jaotustes kasutatav gssapi.patch, mis lisab OpenSSH-sse GSSAPI-põhise võtmevahetuse toe, sisaldab haavatavust (CVE-2026-3497), mis viib osutaja dereferentseerimise, mälu kahjustamise ja privileegide eraldamise mehhanismi (Privsep) ring ümber. Haavatavust saab kaugtasandil ära kasutada enne autentimise toimumist. Probleemi avastanud teadlane demonstreeris protsessi kokkuvarisemise algatamist, saates SSH-serverile ühe muudetud võrgupaketti. Ei välistata, et lisaks teenuse keelamisele on olemas ka ohtlikumaid haavatavuse ära kasutamise variante.

Tasub mainida, et alustuseks keeldusid OpenSSH arendajad GSSAPI toe toetamise põhikoosseisu lisamisest, kuna kahtlesid selle ohutuses. Paljud Linuxi distributsioonid on siiski selle patši juba oma OpenSSH pakettidesse lisanud. GSSAPI patši leiab mitmeid versioone, kuid enamikus neist on olemas haavatavust tekitav viga. Praegu on parandamine saadaval ainult patši kujul, mille muudatused seisnevad sshpkt_disconnect() funktsiooni kutsumise asendamises ssh_packet_disconnect() funktsiooniga failis kexgsss.c.

Praegu on haavatavus kinnitatud Debianis ja Ubuntu's. Teistes distributsioonides täpsustatakse probleemse patši rakendamist ja selle haavatavust (SUSE/openSUSE, RHEL, Gentoo, Arch, Fedora). Haavatavus avaldub vaid juhul, kui on aktiveeritud seadistuse valik „GSSAPIKeyExchange yes“. Samuti mõjutavad ärakasutamise võimalusi distributsioonide ehitamisse seotud kompilaatori valikud.

Ohvawa tekib viga sshpkt_disconnect() funktsioonis, mille tõttu protsess ei lõpetanud pärast disconnect-sõnumi saabumist, mis võimaldas ründajal võtmete lepingu etapis saata mitte ette nähtud sõnumit. serverile GSSAPI sõnumi tüüp. Pärast ettenägematut GSSAPI sõnumi saabumist, server paigutab selle järjekorda ja ei katkesta programmide täitmist, kuid samal ajal ei initsialiseeri muutujaid, mis määravad ühenduse parameetrid. Edasi liikudes toimub sündmuste töötlemise tsüklis kood, mis loeb initsialiseerimata struktuuri recv_tok, mis asub virnas (loetakse andmeid, mis on jäänud virna eelmisest funktsioonikõnest), saadab selle privileege protsessile IPC kaudu ja edastab seejärel gss_release_buffer() funktsioonile, mis võib kutsuda üles free() funktsiooni ja vabastada mälu vale näitaja jaoks, mis suunab juhuslikku mälupiirkonda.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster