Vydání OpenSSH 9.2 s opravou zranitelnosti před ověřením

Byla zveřejněna verze OpenSSH 9.2, otevřená implementace klienta a serveru pro práci s protokoly SSH 2.0 a SFTP. Nová verze odstraňuje zranitelnost, která vede k dvojitému uvolnění paměti ve fázi před autentizací. Ovlivněno je pouze vydání OpenSSH 9.1, v dřívějších verzích se problém neobjevuje.

K vytvoření podmínek pro projev zranitelnosti stačí změnit banner klienta SSH na „SSH-2.0-FuTTYSH_9.1p1“ a nastavit příznaky „SSH_BUG_CURVE25519PAD“ a „SSH_OLD_DHGEX“, které závisí na verzi SSH klienta. Po nastavení těchto příznaků se paměť pro vyrovnávací paměť „options.kex_algorithms“ uvolní dvakrát – při spuštění funkce do_ssh2_kex(), která volá compat_kex_proposal(), a při spuštění funkce do_authentication2(), která volá input_userauth_request(), mm_getpwna ), copy_set_server_options() podél řetězce, assemble_algorithms() a kex_assemble_names().

Vytvoření funkčního exploitu pro zranitelnost se považuje za nepravděpodobné, protože proces zneužití je příliš komplikovaný – moderní knihovny alokace paměti poskytují ochranu proti dvojitému uvolnění paměti a proces předběžného ověření, ve kterém se chyba vyskytuje, běží se sníženými oprávněními v izolovaném prostředí. prostředí sandboxu.

Kromě zmíněné zranitelnosti opravuje nové vydání také další dva bezpečnostní problémy:

  • Při zpracování nastavení „PermitRemoteOpen“ došlo k chybě, která způsobila, že první argument byl ignorován, pokud se liší od hodnot „any“ a „none“. Problém se objevuje ve verzích novějších než OpenSSH 8.7 a způsobuje vynechání kontroly, pokud je zadáno pouze jedno oprávnění.
  • Útočník ovládající server DNS používaný k překladu názvů může dosáhnout nahrazení speciálních znaků (například „*“) v souborech známých_hostitelů, pokud jsou v konfiguraci povoleny možnosti CanonicalizeHostname a CanonicalizePermittedCNAMEs a systémový resolver nekontroluje správnost odpovědi ze serveru DNS. Útok je považován za nepravděpodobný, protože vrácená jména musí odpovídat podmínkám zadaným prostřednictvím CanonicalizePermittedCNAMEs.

Další změny:

  • Do ssh_config pro ssh bylo přidáno nastavení EnableEscapeCommandline, které řídí, zda je povoleno zpracování sekvence escape "~C", která poskytuje příkazový řádek, na straně klienta. Ve výchozím nastavení je nyní zpracování "~C" zakázáno, aby se používala přísnější izolace karantény, což potenciálně narušuje systémy, které používají "~C" pro předávání portů za běhu.
  • Do sshd_config pro sshd byla přidána direktiva ChannelTimeout pro nastavení časového limitu nečinnosti kanálu (kanály, ve kterých není zaznamenán žádný provoz po dobu specifikovanou v direktivě, budou automaticky uzavřeny). Pro relaci, X11, agenta a přesměrování provozu lze nastavit různé časové limity.
  • Direktiva UnusedConnectionTimeout byla přidána do sshd_config pro sshd, což vám umožňuje nastavit časový limit pro ukončení připojení klientů, kteří byli po určitou dobu bez aktivních kanálů.
  • Možnost „-V“ byla přidána do sshd pro zobrazení verze, podobně jako podobná možnost v klientovi ssh.
  • Do výstupu "ssh -G" byl přidán řádek "Host" odrážející hodnotu argumentu hostname.
  • Možnost "-X" byla přidána do scp a sftp pro řízení parametrů protokolu SFTP, jako je velikost vyrovnávací paměti pro kopírování a počet nevyřízených požadavků.
  • ssh-keyscan umožňuje skenování celých rozsahů adres CIDR, například "ssh-keyscan 192.168.0.0/24".

Zdroj: opennet.ru

Přidat komentář