Уязвимость в Erlang/OTP SSH позволяет исчерпать память узла через неограниченные session-каналы (CVE-2026-68956)
В Erlang/OTP SSH обнаружена уязвимость выделения ресурсов без ограничений: аутентифицированный удалённый атакующий может исчерпать память узла, многократно открывая session-каналы, которые никогда не получают обработчик. Проблема затрагивает OTP 18.1.2 и новее и обходит опцию max_channels, поэтому стандартная митигация не работает. CVSS — 7.1 (HIGH).
Подробности
Уязвимость затрагивает Erlang/OTP: OTP от 18.1.2 до версий OTP 27.3.4.18, OTP 28.5.0.7 и OTP 29.1.1, что соответствует ssh от 4.1.1 до версий 5.2.11.13, 5.5.2.6 и 6.0.6. Затронутость версий OTP ранее 18.1.2 (ssh ранее 4.1.1) неизвестна. Ветка обработки "session" в ssh_connection:handle_msg/4 проверяет только minimal_remote_max_packet_size, после чего вызывает setup_session/5. Эта функция безусловно создаёт запись #channel{} и помещает её в ETS-кэш каналов. Опция демона max_channels учитывается только в ssh_channel_sup:max_num_channels_not_exceeded/2, которая подсчитывает дочерние процессы супервизора. Канал, которому так и не был назначен обработчик shell, exec или subsystem, остаётся невидимым для лимита, поэтому установка конечного значения max_channels не предотвращает атаку. Согласно RFC 4254, раздел 5.1, на одном соединении допускается множество session-каналов. Каждая запись занимает лишь несколько сотен байт, поэтому одно аутентифицированное соединение способно накапливать каналы до тех пор, пока на узле не закончится память и эмулятор не завершится. Это затрагивает все приложения, работающие на данном узле. Стоит отметить, что получить содержимое файлов, учётные данные или доступ на запись при эксплуатации нельзя — речь идёт об отказе в обслуживании через истощение памяти. Уязвимости присвоен CVSS 7.1 (HIGH).Что делать
Основная рекомендация — обновить Erlang/OTP до версий OTP 27.3.4.18, OTP 28.5.0.7 или OTP 29.1.1 и выше, что соответствует ssh 5.2.11.13, 5.5.2.6 и 6.0.6. Отдельно следует учитывать, что установка конечного значения max_channels сама по себе не устраняет проблему, поскольку необработанные каналы не попадают под этот лимит. Поэтому до установки обновления стоит ограничить доступ к SSH-сервису доверенными пользователями и сетями, а также контролировать потребление памяти на узлах, принимающих входящие SSH-соединения. Итог: уязвимость CVE-2026-68956 позволяет аутентифицированному атакующему вызвать отказ в обслуживании SSH-узла Erlang/OTP через исчерпание памяти. Поскольку опция max_channels не защищает от атаки, единственным надёжным решением является обновление до исправленных версий.Источник: CVE Project (cvelistV5)
