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-сообщений.

  1. Определите текущую версию 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

  1. Обновите пакеты Erlang/OTP через менеджер пакетов вашей ОС (для Debian/Ubuntu):
apt update && apt install --only-upgrade erlang-ssh erlang-base

  1. Если вы используете специфические дистрибутивы (например, RabbitMQ или кастомные сборки), обновите среду исполнения до версий:
  2. OTP 27.x: обновите до 27.2.1 или выше.
  3. OTP 26.x: обновите до 26.2.5.6 или выше.
  4. OTP 25.x: обновите до 25.3.2.16 или выше.

  5. После обновления перезапустите все зависимые сервисы:

systemctl restart rabbitmq-server

Временные меры

Если немедленное обновление невозможно, примените следующие защитные механизмы:

  1. Ограничьте доступ к порту 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

  1. Если SSH-функционал в Erlang/OTP не является критически важным для работы приложения, временно отключите приложение ssh в конфигурации вашего проекта или остановите его в работающей ноде:
erl -name node@host -eval "application:stop(ssh)." -noshell -s erlang halt

  1. Настройте систему обнаружения вторжений (IDS/IPS) на поиск аномальных последовательностей SSH-пакетов (например, попытки передачи данных до завершения фазы SSH_MSG_USERAUTH_SUCCESS).

  2. Для продуктов Cisco, NetApp и SUSE, использующих встроенный Erlang, следуйте официальным рекомендациям вендоров по установке соответствующих патчей безопасности (Security Advisories).