Palju Linuxi distributsioonides kasutatavates gssapi.patch-i plaastrites, mis lisab OpenSSH-le GSSAPI pĂ”hiseid vĂ”tmevahetuse toe, on tuvastatud haavatavus (CVE-2026-3497), mis viib osutaja dereferentsimiseni, mĂ€lu kahjustumiseni ja privileegide eraldamise mehhanismi (Privsep) ĂŒmbersuunamiseni. Haavatavust saab kaugelt Ă€ra kasutada enne autentimise toimumist. Probleemi avastanud teadlane demonstreeris protsessi hĂ€vimise algatamist, saates SSH-serverile ĂŒhe muudetud vĂ”rgu paketti. Ei ole vĂ€listatud, et peale teenuse katkestamise on haavatavuse jaoks olemas veel ohtlikumaid Ă€ra kasutamise variante.
On tÀhelepanuvÀÀrne, et kunagi keeldusid OpenSSH arendajad GSSAPI toe toetamise muudatuse pÀÀstmisest, pÔhjustades kahtlusi selle turvalisuses. Paljud Linuxi distributsioonid on siiski selle plaastri oma OpenSSH pakettidesse lisanud. GSSAPI plaastri mitu versiooni on levinud, kuid enamikus neist on haavatavust pÔhjustav viga. Parandus on hetkel saadaval vaid plaastri vormis, mille muudatused hÔlmavad sshpkt_disconnect() funktsiooni vÀljakutse asendamist ssh_packet_disconnect() funktsiooniga failis kexgsss.c.
Praegu on haavatavus kinnitatud Debianis ja Ubuntu. Muudes distributsioonides on probleemse plaastri rakendamise ja selle haavatavuse toimetamine aktiivselt kontrollimisel (SUSE/openSUSE, RHEL, Gentoo, Arch, Fedora). Haavatavus ilmneb ainult siis, kui seadistustes on valitud valik âGSSAPIKeyExchange yesâ. Haavatavuse Ă€ra kasutamise vĂ”imalusele mĂ”jutavad ka sealsete distributsioonide paketi koostamisel kasutatud kompilaatori valikud.
Haavatavuse tekkimise pĂ”hjuseks on viga sshpkt_disconnect() funktsioonis, mille tĂ”ttu protsess ei lĂ”petanud pĂ€rast disconnect-sĂ”numi vastuvĂ”tmist, mis vĂ”imaldas rĂŒndajal vĂ”tmete kokkuleppimise etapis saata mitte ettenĂ€htud GSSAPI sĂ”numit. serverilt PĂ€rast ettemÀÀramata GSSAPI sĂ”numi saamist, server paneb tema jĂ€rjekorda ja ei katkesta programmi tĂ€itmist, kuid ei initsialiseeri samal ajal ĂŒhenduse parameetreid mÀÀravaid muutujaid. Hiljem, sĂŒndmuste töötlemise tsĂŒklis, tĂ€idab koodi, mis loeb initsialiseerimata struktuuri recv_tok virnast (loetakse andmed, mis on virnas jÀÀnud eelmise funktsiooni kutsumise jĂ€rel), saadab selle privileeritud protsessile lĂ€bi IPC ja seejĂ€rel edastab gss_release_buffer() funktsiooni, mis vĂ”ib kutsuda funktsiooni free() ja vabastada mĂ€lu vale viitaja jaoks, mis viitab juhuslikule mĂ€lu piirkonnale.
Allikas: opennet.ru
