Уязвимость в поставляемом во FreeBSD варианте OpenSSH, допускающая удалённое выполнение кода

В поставляемом в составе FreeBSD сервере OpenSSH выявлена уязвимость (CVE-2024-7589), позволяющая добиться удалённого выполнения кода с правами root без прохождения аутентификации. Уязвимость является вариантом выявленной в начале июля проблемы в OpenSSH (CVE-2024-6387) и также вызвана состоянием гонки, возникающем из-за выполнения в обработчике сигналов функций, не рассчитанных на вызов в асинхронном режиме.

Разработчики FreeBSD устранили исходную июльскую уязвимость сразу после анонса, но исправление не охватывало всех возможных векторов атаки. Исправление сводилось к отключению вызова функции sshlogv, выделяющей память динамически, что при асинхронном выполнении могло привести к повреждению внутренних структур malloc при срабатывании обработчика сигнала SIGALRM во время выполнения определённого кода. Как оказалось, похожая проблема возникала в специфичном для FreeBSD вызове функции blacklist_notify, обеспечивающем интеграцию с фоновым процессом blacklistd.

Помимо применения патча, уязвимость можно блокировать через выставление в /etc/ssh/sshd_config параметра «LoginGraceTime=0», но при этом отключение таймаута упростит инициирование отказа в обслуживании при установке большого числа соединений, превышающих лимиты, заданные через параметр MaxStartups.

Кроме того, устранены ещё три уязвимости во FreeBSD:

  • CVE-2024-6760 — возможность обхода защиты от применения ktrace для трассировки suid-процессов, что позволяет непривилегированному пользователю получить доступ к содержимому файлов, для чтения которых у него нет прав, например, можно прочитать содержимое файла с хэшами паролей пользователей.
  • CVE-2024-6759 — в NFS-клиенте выявлена возможность использования в именах файлов символов разделения путей «..» и «/»;
  • CVE-2024-6640 — уязвимость в пакетном фильтре PF, из-за которой пакеты ICMPv6 с нулевым идентификатором не подпадали под правила межсетевого экрана, рассчитанные на то, что входящие пакеты отражаются в таблице состояния (state table).

Источник: http://www.opennet.ru/opennews/art.shtml?num=61690