Издаване на 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().

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

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

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

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

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

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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster