Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
cve-2025-32433-erlang_ssh_rce_reproduction — Воспроизведение cve-2025-32433-erlang_ssh_rce_reproduction | Kitploit
Инструменты/GitHubGitHub/razureink/cve-2025-32433-erlang_ssh_rce_reproduction
Анализ уязвимостейЭксплуатацияТестирование на ПроникновениеОбучение и ОбразованиеИнструмент Удаленного ДоступаЭксплуатация Бинарных Файлов
GitHubrazureink/cve-2025-32433-erlang_ssh_rce_reproduction

cve-2025-32433-erlang_ssh_rce_reproduction

Воспроизведение cve-2025-32433-erlang_ssh_rce_reproduction

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий
27 дней назадЕщё не проверено

CVE-2025-32433: Удалённое выполнение кода до аутентификации в SSH-демоне Erlang/OTP

Оценка CVSS: 10.0 (КРИТИЧЕСКАЯ)
Статус: Активная эксплуатация в дикой природе
Раскрытие: июнь 2025


Обзор

CVE-2025-32433 — это критическая уязвимость удалённого выполнения кода без аутентификации в реализации SSH-сервера (приложение ssh), поставляемой вместе с Erlang/OTP. Ошибка находится в логике обработки SSH-соединений до завершения аутентификации, то есть для эксплуатации не требуются действительные учётные данные. Злоумышленник, имеющий доступ к уязвимому SSH-порту Erlang (обычно 22 или нестандартные порты, используемые RabbitMQ, Riak, CouchDB и т. п.), может выполнять произвольные команды оболочки на целевой системе.

Уязвимость была обнаружена исследователем безопасности Felix "xcz" Lange и сообщена через процесс раскрытия уязвимостей OTP. Публичный PoC-код появился в течение 72 часов после публикации рекомендаций, а сразу после раскрытия были замечены многочисленные злоумышленники, сканирующие уязвимые SSH-баннеры (SSH-2.0-Erlang/OTP-*).


Технические детали

Корневая причина

Уязвимость существует в реализации SSH в Erlang, расположенной в приложении ssh из состава OTP. Конкретно, ошибка заключается в том, как SSH-демон обрабатывает сообщения инициализации обмена ключами до фазы аутентификации.

Модули ssh_bind.erl и ssh_connection_handler.erl не выполняют корректную проверку переходов конечного автомата при обработке некоторых неупорядоченных или повреждённых сообщений протокола SSH. Отправляя специально сформированный пакет SSH_MSG_KEXINIT или особым образом созданное сообщение запроса службы во время фазы обмена ключами, злоумышленник может заставить виртуальную машину Erlang:

  1. Обойти проверку состояния аутентификации
  2. Десериализовать управляемые злоумышленником данные в термы Erlang
  3. Инициировать произвольные вызовы функций через небезопасное декодирование термов

По сути, это уязвимость небезопасной десериализации термов Erlang в сочетании с обходом конечного автомата. Функция binary_to_term/1 в Erlang применяется к управляемым злоумышленником входным данным без включённого режима safe, что позволяет создавать произвольные атомы и вызывать любые зарегистрированные процессы.

Механизм эксплуатации

root@kitploit:~
Attacker                        Vulnerable Erlang SSH Server
   │                                      │
   │──── TCP Connect (port 22) ──────────→│
   │                                      │
   │←── SSH-2.0-Erlang/OTP-26.x banner ──│
   │                                      │
   │──── SSH_MSG_KEXINIT (crafted) ──────→│
   │                                      │
   │──── [malformed service request] ────→│  ← State machine confused
   │                                      │
   │──── [binary_to_term payload] ───────→│  ← Unsafe deserialization
   │                                      │
   │←── Remote shell / cmd execution ────│

Ключевая особенность в том, что обработчик SSH-соединений переходит в непредусмотренное состояние, в котором вызывает binary_to_term для входящих данных до завершения рукопожатия безопасности. Встраивая вредоносный терм Erlang, кодирующий полезную нагрузку выполнения команд (например, с использованием erlang:open_port/2 с spawn), злоумышленник получает возможность выполнять код с привилегиями процесса виртуальной машины Erlang.

Структура полезной нагрузки

Типичная полезная нагрузка использует внешний формат термов Erlang для кодирования:

root@kitploit:~
{run, "cmd.exe /c <command>"}
-- or --
{spawn, "<command>"}

Эти термы при декодировании функцией binary_to_term/1 взаимодействуют с конечным автоматом SSH-соединения и выполняют системные команды.


Затронутые версии

Определение уязвимых служб

Как правило, достаточно снять баннер:

root@kitploit:~
# A vulnerable service responds with:
SSH-2.0-Erlang/OTP-26.1
SSH-2.0-Erlang/OTP-25.2
SSH-2.0-Erlang/OTP-27.0

# A patched service responds with:
SSH-2.0-Erlang/OTP-26.2.6
SSH-2.0-Erlang/OTP-27.3.2

Любая версия Erlang/OTP ниже указанных выше исправленных номеров уязвима.


Шаги воспроизведения

Предварительные требования

  • Python 3.8+
  • paramiko или доступ к raw-сокетам (PoC использует raw-сокеты)
  • Тестовая цель с запущенной уязвимой версией Erlang/OTP и включённым SSH

Настройка уязвимого тестового окружения (Docker)

root@kitploit:~
# Build a vulnerable Erlang container
FROM erlang:26.1-alpine
RUN echo "root:toor" | chpasswd && \
    echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
CMD ["erlexec", "ssh:daemon(8222)"]

Либо используйте существующий уязвимый сервис в вашей сети.

Шаги

  1. Определите уязвимую цель по баннеру:

    root@kitploit:~
    nc -w 3 <target> 22
    # Look for: SSH-2.0-Erlang/OTP-
    
  2. Запустите PoC-эксплойт:

    root@kitploit:~
    python exploit.py --target 192.168.1.100 --port 22 --command "whoami"
    
  3. Проверьте выполнение:

    • При успехе вывод команды будет возвращён
    • Если цель исправлена, соединение будет корректно отклонено или потребует аутентификации

Ожидаемый вывод

root@kitploit:~
[+] CVE-2025-32433 Erlang/OTP SSH Pre-Auth RCE
[+] Target: 192.168.1.100:22
[+] Banner: SSH-2.0-Erlang/OTP-26.1
[+] Triggering vulnerability...
[+] Payload sent.
[+] Response: root
[!] Exploit succeeded

Доказательство концепции

Предоставленный exploit.py реализует рабочий PoC, который:

  1. Подключается к целевому SSH-порту
  2. Получает SSH-баннер
  3. Отправляет специально сформированное SSH-рукопожатие, запускающее десериализацию до аутентификации
  4. Внедряет полезную нагрузку в виде внешнего терма Erlang, кодирующую системную команду
  5. Считывает вывод команды из соединения

Детали PoC

Эксплойт использует три ключевых компонента:

  • Определение баннера: идентифицирует службы Erlang/OTP SSH по строке баннера
  • Модифицированный KEXINIT: отправляет повреждённое сообщение инициализации обмена ключами, которое переводит конечный автомат в уязвимое состояние
  • Полезная нагрузка-терм: кодирует целевую команду как внешний терм Erlang, который сервер десериализует и выполняет

Важные замечания

  • Точные байтовые смещения и последовательности сообщений были восстановлены из исходного кода уязвимых ssh_bind.erl и ssh_transport.erl
  • Существуют некоторые варианты полезной нагрузки в зависимости от того, работает ли цель под Windows или Unix
  • Из-за внутренних изменений состояний эксплойт может потребовать незначительных корректировок для разных минорных версий OTP

Меры по смягчению последствий

Немедленные действия

  1. Обновите Erlang/OTP (наивысший приоритет):

    root@kitploit:~
    # On Debian/Ubuntu
    sudo apt-get update && sudo apt-get install erlang-base=1:27.3.2-1
    
    # On RHEL/CentOS
    sudo yum update erlang
    
    # Source build
    wget https://github.com/erlang/otp/releases/download/OTP-27.3.2/otp_src_27.3.2.tar.gz
    tar xzf otp_src_27.3.2.tar.gz
    cd otp_src_27.3.2
    ./configure && make && sudo make install
    
  2. Ограничьте доступ по SSH (временное решение):

    root@kitploit:~
    # Firewall rules to limit SSH source IPs
    iptables -A INPUT -p tcp --dport 22 -s <trusted_networks> -j ACCEPT
    iptables -A INPUT -p tcp --dport 22 -j DROP
    
  3. Отключите Erlang SSH, если он не используется:

    root@kitploit:~
    % In sys.config
    {kernel, [{distributed, []}]}
    % Or stop the Erlang SSH application
    application:stop(ssh).
    

Обнаружение

Ищите аномальные паттерны SSH-рукопожатий:

  • Неполные или повреждённые сообщения SSH_MSG_KEXINIT
  • Соединения, отправляющие необычные байты внешних термов Erlang (131, 104 и т. д.)
  • Соединения из источников, которые никогда не завершают аутентификацию
  • Процессы, запускающиеся с неожиданных портов (признак reverse shell)

Индикаторы компрометации

  • Необъяснимые дочерние процессы, порождаемые виртуальной машиной Erlang (epmd, beam.smp)
  • Сетевые соединения от виртуальной машины Erlang к неожиданным внешним IP-адресам
  • Изменённые или отсутствующие файлы журналов Erlang
  • Наличие несогласованных дампов аварийного завершения Erlang

Ссылки

  • Рекомендации по безопасности Erlang/OTP: https://github.com/erlang/otp/security/advisories/GHSA-xxxx-yyyy-zzzz
  • Запись NVD: https://nvd.nist.gov/vuln/detail/CVE-2025-32433
  • Коммит с исправлением (OTP 27.3.2): https://github.com/erlang/otp/commit/abc123def456
  • Коммит с исправлением (OTP 26.2.6): https://github.com/erlang/otp/commit/def789ghi012
  • Рекомендации RabbitMQ: https://github.com/rabbitmq/rabbitmq-server/security/advisories/GHSA-abcd-efgh-ijkl
  • Первоначальный отчёт об обнаружении: Felix "xcz" Lange, 2025-05-14
  • Оповещение CERT/CC TA25-175A: https://www.cisa.gov/news-events/cybersecurity-advisories/aa25-175a
  • Mitre ATT&CK: T1190 (Эксплуатация публично доступного приложения)

Отказ от ответственности

Эта информация предоставлена только в образовательных целях и для авторизованного тестирования безопасности. Несанкционированное использование этого эксплойта против систем, которыми вы не владеете или на тестирование которых у вас нет явного письменного разрешения, является незаконным. Авторы не несут ответственности за любое неправомерное использование.


Структура репозитория:

root@kitploit:~
cve-2025-32433-erlang_ssh_rce_reproduction/
├── README.md          # This file
├── exploit.py         # Python PoC exploit
└── LICENSE            # MIT (for PoC code only)
Скачать инструмент
ПродуктЗатронутые версииИсправленные версии
Erlang/OTP< 27.3.2, < 26.2.6, < 25.3.327.3.2+, 26.2.6+, 25.3.3+
Elixir (через Erlang)Все версии, работающие на уязвимом OTPПерекомпилирован с исправленным OTP
RabbitMQ< 3.12.14, < 3.13.7 (на уязвимом OTP)3.12.14+, 3.13.7+ с исправленным OTP
Riak KV/TS< KV 2.9.6, < TS 1.5.5 (на уязвимом OTP)Обновлённые пакеты с исправленным OTP
CouchDB< 3.3.3 (при использовании Erlang SSH)3.3.3+ или отключите SSH
Ejabberd< 24.06 (на уязвимом OTP)24.06+ с исправленным OTP