OpenSSH 9.2 пуснат с корекция за уязвимост преди удостоверяване

Публикувана е версията на OpenSSH 9.2, отворена реализация на клиент и сървър за работа с помощта на протоколите SSH 2.0 и SFTP. Новата версия елиминира уязвимост, която води до двойно освобождаване на памет на етапа на предварително удостоверяване. Засегната е само версията OpenSSH 9.1; проблемът не се появява в по-ранни версии.

За да създадете условия за проява на уязвимост, е достатъчно да промените банера на SSH клиента на „SSH-2.0-FuTTYSH_9.1p1“, за да зададете флаговете „SSH_BUG_CURVE25519PAD“ и „SSH_OLD_DHGEX“, които зависят от версията на SSH клиент. След задаване на тези флагове паметта за буфера “options.kex_algorithms” се освобождава два пъти - при изпълнение на функцията do_ssh2_kex(), която извиква compat_kex_proposal(), и при изпълнение на функцията do_authentication2(), която извиква input_userauth_request(), mm_getpwnamallow( ), copy_set_server_options() по веригата , assemble_algorithms() и kex_assemble_names().

Създаването на работещ експлойт за уязвимостта се счита за малко вероятно, тъй като процесът на експлоатиране е твърде сложен - модерните библиотеки за разпределение на памет осигуряват защита срещу двойно освобождаване на паметта, а процесът на предварително удостоверяване, в който е налице грешката, се изпълнява с намалени привилегии в изолиран sandbox среда.

В допълнение към отбелязаната уязвимост, новата версия също коригира още два проблема със сигурността:

  • Възникна грешка при обработката на настройката „PermitRemoteOpen“, което доведе до игнориране на първия аргумент, ако се различава от стойностите „any“ и „none“. Проблемът се появява във версии, по-нови от OpenSSH 8.7, и причинява пропускане на проверката, когато е указано само едно разрешение.
  • Нападател, контролиращ DNS сървъра, използван за разрешаване на имена, може да постигне заместването на специални знаци (например „*“) във файловете unknown_hosts, ако опциите CanonicalizeHostname и CanonicalizePermittedCNAMEs са активирани в конфигурацията и системният резолвер не проверява правилността на отговори от DNS сървъра. Атаката се счита за малко вероятна, тъй като върнатите имена трябва да отговарят на условията, посочени чрез CanonicalizePermittedCNAMEs.

Други промени:

  • Добавена е настройка EnableEscapeCommandline към ssh_config за ssh, за да контролира дали обработката от страна на клиента на последователността за избягване на "~C", която предоставя командния ред, е разрешена. По подразбиране обработката на „~C“ вече е деактивирана, за да се използва по-строга изолация на пясъчника, което потенциално нарушава системите, които използват „~C“ за пренасочване на порт по време на изпълнение.
  • Директивата ChannelTimeout е добавена към sshd_config за sshd, за да зададе времето за изчакване на неактивност на канала (канали, в които не се записва трафик за времето, посочено в директивата, ще бъдат автоматично затворени). Могат да се задават различни изчаквания за сесия, X11, агент и пренасочване на трафика.
  • Директивата UnusedConnectionTimeout е добавена към sshd_config за sshd, което ви позволява да зададете таймаут за прекратяване на клиентски връзки, които са били без активни канали за определено време.
  • Опцията „-V“ е добавена към sshd за показване на версията, подобно на подобната опция в ssh клиента.
  • Добавен е редът „Хост“ към изхода на „ssh -G“, отразяващ стойността на аргумента име на хост.
  • Опцията "-X" е добавена към scp и sftp за контрол на параметрите на SFTP протокола, като например размера на буфера за копиране и броя на чакащите заявки.
  • ssh-keyscan позволява сканиране на пълни диапазони от CIDR адреси, например "ssh-keyscan 192.168.0.0/24".

Източник: opennet.ru

Добавяне на нов коментар