Специалисты по безопасности обнаружили и устранили уязвимость высокого уровня опасности в популярной библиотеке libssh2, отвечающей за реализацию протокола SSH на стороне клиента. Проблема, получившая идентификатор CVE-2026-55199, затрагивает все версии библиотеки вплоть до 1.11.1 включительно и исправлена в коммите 1762685. Атака позволяет злоумышленнику, контролирующему SSH-сервер, вызвать длительную перегрузку центрального процессора на компьютере клиента ещё до этапа аутентификации.
Уязвимость CVE-2026-55199
Уязвимость локализована в обработчике сообщения "SSH_MSG_EXT_INFO", расположенном в файле "src/packet.c". В ходе установки соединения сервер может отправить клиенту поле "nr_extensions" с критически большим значением - например, "0xFFFFFFFF". После получения такого пакета клиентская библиотека входит в цикл, в котором последовательно обрабатывает мнимые расширения. Поскольку возвращаемые значения от функции "_libssh2_get_string()" не проверяются, цикл не прерывается корректно. Более того, штатный механизм тайм-аута сессии не распространяется на интенсивные вычислительные циклы, поэтому клиент продолжает бесконечно использовать 100% ресурсов одного ядра процессора на протяжении как минимум 60 секунд. Эффективно это приводит к отказу в обслуживании для самого клиентского приложения и может замедлить работу всей операционной системы, если не предусмотрено ограничение времени выполнения.
Базовая оценка CVSS v4 для данной проблемы составляет 7,5 балла из 10 при следующем профиле: вектор атаки - сетевой, сложность эксплуатации низкая, привилегии не требуются, взаимодействие с пользователем отсутствует. Уязвимость влияет только на доступность (Availability), конфиденциальность и целостность данных не страдают. В классификации CWE-835 ошибка описана как "цикл с недостижимым условием выхода" - один из распространённых типов логических дефектов, приводящих к исчерпанию ресурсов.
libssh2 является одной из ключевых библиотек для SSH-клиентов в экосистеме открытого кода. Она используется в таких инструментах, как Git для взаимодействия с удалёнными репозиториями, в ряде FTP-клиентов и систем автоматизации, а также в некоторых системных утилитах Linux и macOS, где поддержка SSH реализована на базе libssh2. Поэтому потенциальная атака затрагивает широкий круг пользователей и корпоративных систем. Взломщик, владеющий SSH-сервером, может спровоцировать отказ в обслуживании на любом клиенте, который попытается подключиться к этому серверу. Примечательно, что для эксплуатации не требуется никакой аутентификации или активных действий со стороны пользователя - достаточно, чтобы приложение просто попыталось инициировать SSH-соединение со скомпрометированным узлом.
В официальном бюллетене безопасности libssh2 разработчики подтвердили, что проблема была закрыта в коммите 1762685. В описании к коммиту указано, что исправление заключается в добавлении проверки возвращаемых значений "_libssh2_get_string()" и ограничении числа обрабатываемых расширений разумным значением по умолчанию. На момент публикации новой версии библиотеки не выпущено - исправление доступно только в виде обновления исходного кода. Пользователям, которые собирают библиотеку из исходников, рекомендуется немедленно применить соответствующий коммит. Для систем, использующих пакетные менеджеры (например, в дистрибутивах Linux), необходимо дождаться обновления пакета "libssh2" до версии, включающей это исправление. В качестве временной меры защиты можно ограничить сетевые подключения к SSH-серверам, вызывающим подозрение, или использовать альтернативные библиотеки, такие как OpenSSH.
Ситуация в очередной раз демонстрирует, что даже зрелые и широко применяемые библиотеки могут содержать ошибки, ведущие к отказам в обслуживании через простой и легко реализуемый вектор. Отсутствие проверки возвращаемых значений при работе с данными, поступающими из сети, остаётся одной из наиболее частых причин подобных уязвимостей. Разработчикам следует пересмотреть процедуру обработки любых потоковых данных, поступающих до аутентификации, чтобы исключить возможность зависания или исчерпания ресурсов. Для конечных пользователей и администраторов актуальным остаётся правило своевременного обновления всех компонентов, связанных с сетевым взаимодействием, особенно библиотек, обрабатывающих входящие данные.
Ссылки