В поставляемом в составе 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).