OpenSSH 9.2 släppt med fix för sårbarhet för förautentisering

Releasen av OpenSSH 9.2 har publicerats, en öppen implementering av en klient och server för att arbeta med SSH 2.0 och SFTP-protokollen. Den nya versionen eliminerar en sårbarhet som leder till dubbel frigöring av minne i förautentiseringsstadiet. Endast OpenSSH 9.1-versionen påverkas, problemet förekommer inte i tidigare versioner.

För att skapa förutsättningar för manifestation av sårbarhet räcker det att ändra SSH-klientbannern till "SSH-2.0-FuTTYSH_9.1p1" för att ställa in flaggorna "SSH_BUG_CURVE25519PAD" och "SSH_OLD_DHGEX", som beror på versionen av SSH. klient. Efter att ha ställt in dessa flaggor frigörs minnet för bufferten "options.kex_algorithms" två gånger - när funktionen do_ssh2_kex() körs, som anropar compat_kex_proposal(), och när funktionen do_authentication2() körs, som anropar input_userauth_request(), mm_getpwna ), copy_set_server_options() längs kedjan , assemble_algorithms() och kex_assemble_names().

Att skapa en fungerande exploatering för sårbarheten anses osannolikt, eftersom exploateringen är för komplicerad - moderna minnesallokeringsbibliotek ger skydd mot dubbel frigöring av minne, och förautentiseringsprocessen där felet finns körs med reducerade privilegier i en isolerad sandlådemiljö.

Utöver den noterade sårbarheten fixar den nya versionen även ytterligare två säkerhetsproblem:

  • Ett fel inträffade vid bearbetning av "PermitRemoteOpen"-inställningen, vilket gjorde att det första argumentet ignorerades om det skiljer sig från värdena "any" och "none". Problemet dyker upp i versioner som är nyare än OpenSSH 8.7 och gör att kontrollen hoppas över när endast en behörighet anges.
  • En angripare som kontrollerar DNS-servern som används för att lösa namn kan ersätta specialtecken (t.ex. "*") i known_hosts-filer om alternativen CanonicalizeHostname och CanonicalizePermittedCNAMEs är aktiverade i konfigurationen och systemupplösaren inte kontrollerar korrektheten av svar från DNS-servern. Attacken anses osannolik eftersom de returnerade namnen måste matcha villkoren som specificeras genom CanonicalizePermittedCNAMEs.

Andra ändringar:

  • En EnableEscapeCommandline-inställning har lagts till i ssh_config för ssh för att styra om bearbetning på klientsidan av escapesekvensen "~C" som tillhandahåller kommandoraden är aktiverad. Som standard är "~C"-hantering nu inaktiverad för att använda stramare sandlådeisolering, vilket potentiellt bryter system som använder "~C" för portvidarebefordran under körning.
  • ChannelTimeout-direktivet har lagts till i sshd_config för sshd för att ställa in timeout för kanalinaktivitet (kanaler där ingen trafik registreras under den tid som anges i direktivet stängs automatiskt). Olika tidsgränser kan ställas in för session, X11, agent och trafikomdirigering.
  • Direktivet UnusedConnectionTimeout har lagts till i sshd_config för sshd, vilket gör att du kan ställa in en timeout för att avsluta klientanslutningar som har varit utan aktiva kanaler under en viss tid.
  • Alternativet "-V" har lagts till i sshd för att visa versionen, liknande det liknande alternativet i ssh-klienten.
  • Lade till raden "Värd" till utgången av "ssh -G", vilket återspeglar värdet på argumentet värdnamn.
  • Alternativet "-X" har lagts till i scp och sftp för att styra SFTP-protokollparametrar såsom kopieringsbuffertstorleken och antalet väntande förfrågningar.
  • ssh-keyscan tillåter genomsökning av hela CIDR-adressintervall, till exempel "ssh-keyscan 192.168.0.0/24".

Källa: opennet.ru

Lägg en kommentar