CVE-2025-32433
Erlang Erlang/OTP
2025-06-09
Erlang Erlang/OTP SSH server contains a missing authentication for critical function vulnerability. This could allow an attacker to execute arbitrary commands without valid credentials, potentially leading to unauthenticated remote code execution (RCE). By exploiting a flaw in how SSH protocol messages are handled, a malicious actor could gain unauthorized access to affected systems. This vulnerability could affect various products that implement Erlang/OTP SSH server, including—but not limited to—Cisco, NetApp, and SUSE.
Технический анализ и план устранения
Суть уязвимости
CVE-2025-32433 представляет собой критическую уязвимость в реализации SSH-сервера Erlang/OTP, связанную с отсутствием проверки аутентификации для критических функций (CWE-306).
Проблема кроется в логике обработки специфических сообщений протокола SSH на этапе установления соединения. Из-за некорректного управления состояниями конечного автомата (state machine) в модуле ssh, злоумышленник может отправить специально сформированные пакеты, которые позволяют обойти процесс ввода учетных данных. Это дает возможность выполнить произвольный код (RCE) в контексте пользователя, запустившего Erlang-узел, или получить доступ к интерактивной оболочке (shell) без авторизации. Уязвимость затрагивает все системы, использующие стандартное приложение ssh из состава Erlang/OTP для организации удаленного управления.
Как исправить
Основным способом устранения является обновление Erlang/OTP до версий, в которых исправлена логика обработки SSH-сообщений.
- Определите текущую версию Erlang/OTP в вашей системе:
erl -eval '{ok, Version} = file:read_file(filename:join([code:root_dir(), "releases", erlang:system_info(otp_release), "OTP_VERSION"])), io:fwrite("~s", [Version]), halt().' -noshell
- Обновите пакеты Erlang/OTP через менеджер пакетов вашей ОС (для Debian/Ubuntu):
apt update && apt install --only-upgrade erlang-ssh erlang-base
- Если вы используете специфические дистрибутивы (например, RabbitMQ или кастомные сборки), обновите среду исполнения до версий:
- OTP 27.x: обновите до 27.2.1 или выше.
- OTP 26.x: обновите до 26.2.5.6 или выше.
-
OTP 25.x: обновите до 25.3.2.16 или выше.
-
После обновления перезапустите все зависимые сервисы:
systemctl restart rabbitmq-server
Временные меры
Если немедленное обновление невозможно, примените следующие защитные механизмы:
- Ограничьте доступ к порту SSH-сервера Erlang (по умолчанию часто используется кастомный порт, если это не стандартный порт 22) с помощью Firewall, разрешив подключения только с доверенных IP-адресов:
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
- Если SSH-функционал в Erlang/OTP не является критически важным для работы приложения, временно отключите приложение
sshв конфигурации вашего проекта или остановите его в работающей ноде:
erl -name node@host -eval "application:stop(ssh)." -noshell -s erlang halt
-
Настройте систему обнаружения вторжений (IDS/IPS) на поиск аномальных последовательностей SSH-пакетов (например, попытки передачи данных до завершения фазы
SSH_MSG_USERAUTH_SUCCESS). -
Для продуктов Cisco, NetApp и SUSE, использующих встроенный Erlang, следуйте официальным рекомендациям вендоров по установке соответствующих патчей безопасности (Security Advisories).