I den patch som anvÀnds i mÄnga Linux-distributioner, gssapi.patch, vilket lÀgger till stöd för nyckelutbyte baserat pÄ GSSAPI i OpenSSH, har en sÄrbarhet upptÀckts (CVE-2026-3497) som leder till avdereferensiering av en pekare, minneskorruption och kringgÄende av privilegieseparationsmekanismen (Privsep). SÄrbarheten kan utnyttjas pÄ distans innan autentisering Àger rum. Forskaren som upptÀckte problemet demonstrerade att det gick att initiera en krasch av processen genom att skicka ett modifierat nÀtverkspaket till SSH-servern. Det kan ocksÄ finnas mer farliga sÀtt att utnyttja sÄrbarheten utöver att orsaka tjÀnsteavbrott.
Det Àr vÀrt att notera att utvecklarna av OpenSSH vid tillfÀllet avstod frÄn att inkludera Àndringar för att stödja GSSAPI i huvudversionen pÄ grund av osÀkerhet rörande dess sÀkerhet. MÄnga Linux-distributioner inkluderade dock denna patch i sina OpenSSH-paket. Flera versioner av GSSAPI-patchen förekommer, men de flesta av dem har en sÄrbarhetsÄtgÀrdande fel. En lösning finns för nÀrvarande endast tillgÀnglig i form av en patch, dÀr Àndringarna innebÀr att funktionen sshpkt_disconnect() ersÀtts med ssh_packet_disconnect() i filen kexgsss.c.
För nÀrvarande har sÄrbarheten bekrÀftats i Debian och Ubuntu. För de övriga distributionerna bekrÀftas anvÀndningen av den problematiska patchen och dess sÄrbarhet (SUSE/openSUSE, RHEL, Gentoo, Arch, Fedora). SÄrbarheten upptrÀder endast nÀr alternativet "GSSAPIKeyExchange yes" Àr aktiverat i instÀllningarna. Möjligheten att utnyttja sÄrbarheten pÄverkas ocksÄ av kompilatoralternativ som anvÀnds vid paketsammandrag.
Orsaken till sÄrbarheten Àr ett fel i funktionen sshpkt_disconnect(), vilket gör att processen inte avslutades efter att disconnect-meddelandet mottogs, vilket möjliggjorde för angriparen att under nyckelsammanslutning skicka en GSSAPI-meddelande typ som inte var avsedd enligt logiken. servern Efter mottagandet av ett oplanerat GSSAPI-meddelande, server placerar den i kön och avbryter inte programmet, men initierar inte variablerna som definierar anslutningsparametrarna. I den fortsatta hÀndelsehanteringsloopen utförs kod som lÀser den oinitierade strukturen recv_tok frÄn stacken (data som kvarstÄr i stacken frÄn föregÄende funktionsanrop), skickar den till en privilegierad process via IPC och överför den sedan till funktionen gss_release_buffer(), som kan anropa funktionen free() och frigöra minnet för en felaktig pekare som refererar till ett slumpmÀssigt minnesomrÄde.
KĂ€lla: opennet.ru
