POC详情: d35ec9d54b9a5539bfefb23bdbe55a9476f11354

来源
关联漏洞
标题: Erlang/OTP 访问控制错误漏洞 (CVE-2025-32433)
描述:Erlang/OTP是Erlang/OTP开源的一个JavaScript编写的处理处理异常的库。该库可以捕捉node.js内置API引发的异常。 Erlang/OTP 27.3.3之前版本存在访问控制错误漏洞,该漏洞源于SSH协议消息处理缺陷,可能导致远程代码执行。
描述
test
介绍
# CVE-2025-32433

## Введение
В данном документе представлено исследование уязвимости **CVE-2025-32433**, затрагивающей реализацию встроенного SSH-сервера в платформе **Erlang/OTP**.  
Эта уязвимость представляет собой возможность удалённого выполнения произвольного кода (Remote Code Execution, **RCE**) без необходимости аутентификации и затрагивает несколько веток Erlang/OTP до выхода патчей:

- версии **27** до **27.3.3**
- версии **26** до **26.2.5.11**
- версии **25** до **25.3.2.20**

Erlang/OTP широко используется как основа для масштабируемых распределённых систем и входит в стек многих известных проектов (например, мессенджеры, брокеры сообщений, высоконагруженные веб-сервисы).  
Наличие критической RCE-уязвимости в базовой библиотеке SSH ставит под угрозу инфраструктуру, использующую Erlang/OTP в качестве сервера или компонента с открытым SSH-доступом.

## Цель отчёта
Пошагово рассмотреть уязвимость и продемонстрировать полный цикл исследования:

1. **Сбор и структурирование материалов:**  
   Найти и систематизировать публично доступные данные о CVE-2025-32433, описать суть и возможный импакт.

2. **Определение CPE и условий конфигурации:**  
   Привести список CPE и конфигурационных условий, для которых уязвимость актуальна.

3. **Разработка PoC/Exploit:**  
   Создать и продемонстрировать рабочий прототип эксплуатации на тестовой среде.

4. **Методики безопасной массовой проверки:**  
   Описать три способа проверки уязвимых хостов:
   - с помощью **nuclei** в активном режиме (минимальный вред при эксплуатации);
   - с помощью **nuclei** в пассивном режиме (по версиям ПО или косвенным признакам);
   - с помощью собственного скрипта на **Python 3** (или Go) с поддержкой многопоточности.

---

## ⚠️ Дисклеймер
Данное исследование проводится **исключительно в образовательных и этичных целях** и выполнено только в контролируемой тестовой среде.  
Автор **не несёт ответственности** за любое неправомерное использование представленных сведений.  
Используйте эту информацию лишь для обучения и повышения уровня безопасности своих систем.

---

## Подробности уязвимости

**Erlang** — язык программирования, созданный для построения высокопараллельных и отказоустойчивых систем.  
Его платформа **Open Telecom Platform (OTP)** на протяжении многих лет применяется в критически важных инфраструктурах — от телекоммуникаций до финансового сектора.

### Erlang/OTP в индустрии
В средах **OT** (операционные технологии) и в сетях **5G** Erlang/OTP ценят за масштабируемость и способность обеспечивать непрерывную работу систем с минимальными простоями.  
Для удалённого администрирования такие сети часто используют встроенную реализацию **SSH** в Erlang/OTP.  
Именно это делает уязвимость **CVE-2025-32433** особенно опасной для подобных сред.

### Суть проблемы
Безопасное взаимодействие в Erlang/OTP обеспечивается собственной реализацией **SSH**, которая:
- отвечает за шифрованные соединения,
- передачу файлов,
- а также — что важно — за выполнение команд.

Уязвимость в этой реализации позволяет злоумышленнику, имеющему сетевой доступ, **выполнить произвольный код без аутентификации**, что создаёт прямую угрозу для уязвимых активов.

### Масштаб распространения
По данным глобального интернет-сканирования (Cortex Xpanse, апрель 2025), уязвимые сервисы Erlang/OTP SSH **широко доступны в интернете** и работают не только на стандартных портах, но и, например, на **TCP-порту 2222**.  
Этот порт нередко используется устаревшими компонентами промышленной автоматизации и протоколом неявной передачи сообщений **Ethernet/IP**, что расширяет возможный вектор атак.

Уязвимость связана с версиями SSH, входящими в релизы Erlang/OTP.  
Распространение уязвимых сервисов на портах, характерных для различных отраслей, формирует значительную глобальную поверхность атаки.

### Наиболее пострадавшие отрасли
Телеметрия показала, что свыше **85 %** попыток эксплуатации были зафиксированы на межсетевых экранах **OT-сегмента** следующих сфер:

- **Здравоохранение**
- **Сельское хозяйство**
- **СМИ и индустрия развлечений**
- **Высокие технологии**

В то же время, несмотря на высокую зависимость от OT, в секторах:
- коммунальные службы,
- энергетика,
- горнодобывающая промышленность,
- аэрокосмическая и оборонная отрасли

не выявлено факторов, которые бы способствовали активному распространению именно этой угрозы.

### Особенности по отраслям
- В сферах **профессиональных и юридических услуг** срабатывания фиксировались преимущественно в ИТ-сетях.
- В отраслях **производства**, **оптовой и розничной торговли**, а также **финансовых услуг** атаки распределялись примерно поровну между **ИТ- и OT-сегментами**, что требует комплексной защиты.

### Статус уязвимости
- Уровень серьёзности: оценка CVSS 3.1 10,0 (**критический**) по критериям Offsec и Tenable. Сложность эксплуатации низкая, не требует учётных данных или взаимодействия с пользователем .
- Список *KEV*: добавлен в каталог известных эксплуатируемых уязвимостей (KEV) CISA 9 июня 2025 г. , что подчеркивает необходимость срочного исправления.

## Затронутые продукты и условия конфигурации

### CPE-идентификаторы
CVE-2025-32433 зарегистрирована в базе NVD со следующими типовыми CPE (Common Platform Enumeration):

* `cpe:2.3:a:erlang:otp:25:*:*:*:*:*:*:*`
* `cpe:2.3:a:erlang:otp:26:*:*:*:*:*:*:*`
* `cpe:2.3:a:erlang:otp:27:*:*:*:*:*:*:*`

> Уязвимыми считаются **минорные релизы ниже следующих патч-версий**:
> * 25.x — до **25.3.2.20** включительно
> * 26.x — до **26.2.5.11** включительно
> * 27.x — до **27.3.3** включительно

### Условия, при которых уязвимость проявляется
* На хосте должен быть запущен **встроенный SSH-демон Erlang/OTP** (`ssh:daemon/2`), а не внешний `openssh`.
* SSH-порт (стандартный `22` или кастомный, например `2222`) должен быть доступен для удалённых подключений из сети атакующего.
* На уровне конфигурации **не требуется особых флагов** — уязвимость связана с логикой протокола в коде Erlang/OTP, а не с конкретными опциями `ssh:daemon/2`.
* Аутентификация может быть любая (парольная, по ключам и т.п.) — баг эксплуатируется **до этапа аутентификации**.

> ⚠️ Если Erlang/OTP используется только как клиентская библиотека без поднятого SSH-сервера, или если сервер закрыт в изолированной сети, уязвимость не достижима.
---
## Технический обзор

Уязвимость возникает из-за того, что встроенный SSH-сервер **Erlang/OTP** некорректно обрабатывает процесс **предварительной аутентификации**.  
Ключевую роль играют два типа сообщений протокола соединения — **`SSH_MSG_CHANNEL_OPEN`** и **`SSH_MSG_CHANNEL_REQUEST`**.  
Согласно стандарту [RFC 4254](https://www.rfc-editor.org/rfc/rfc4254), такие сообщения должны приниматься **только после успешной аутентификации** пользователя.  
Любая попытка отправить их раньше должна немедленно приводить к разрыву соединения.  
В случае **CVE-2025-32433** демон SSH не обеспечивает выполнение этого правила, что позволяет атакующему открыть канал сеанса и передать запрос `exec` с произвольной командой **без предоставления валидных учётных данных**.  
Иными словами, это приводит к **неаутентифицированному удалённому выполнению кода (RCE)** — злоумышленник способен захватить управление сервером, не зная ни имени пользователя, ни пароля, ни ключа.

![diagram-placeholder-1](/img/stack_protokolov.jpg)

Протокол **SSH Connection** работает поверх транспортного и аутентификационного уровней SSH.  
Он предоставляет функции интерактивного входа, удалённого выполнения команд и переадресации портов.  
В уязвимой реализации SSH в Erlang/OTP именно два сообщения — **`SSH_MSG_CHANNEL_OPEN`** и **`SSH_MSG_CHANNEL_REQUEST`**, необходимые для инициации канала и запроса команд, становятся точкой атаки:  
злоумышленник может отправить специально сформированный трафик, который обманом заставит систему выполнить произвольный код **до прохождения аутентификации**.

![diagram-placeholder-2](/img/soobshenia.JPG)

---
## PoC / Exploit

В рамках исследования подготовлен рабочий Proof-of-Concept для CVE-2025-32433.

### Состав файлов
* `CVE-2025-32433.py` — Python-скрипт, который вручную формирует SSH-пакеты
  (`SSH_MSG_KEXINIT`, `SSH_MSG_CHANNEL_OPEN`, `SSH_MSG_CHANNEL_REQUEST`) и
  отправляет их **до прохождения аутентификации**.  
  Это позволяет в уязвимых версиях Erlang/OTP выполнить произвольную команду
  на стороне сервера — в PoC она создаёт файл `/lab.txt` с текстом `cyberok`.

* `ssh_server.erl` — минимальный Erlang-модуль, поднимающий встроенный
  SSH-демон OTP на порту `2222`. Он нужен только для демонстрации
  и запускается внутри Docker-контейнера.

* `Dockerfile` — рецепт сборки контейнера, в котором автоматически
  компилируется указанная версия Erlang/OTP и запускается тестовый
  SSH-сервер.

> ⚠️ Данный PoC предназначен **исключительно для локального тестирования
> и образовательных целей**. Не использовать в продуктивных или
> общедоступных сетях.

---

### Локальное тестирование в Docker

1. **Соберите образ:**
   `git clone https://github.com/iteride/CVE-2025-32433.git && cd CVE-2025-32433/POC/ && docker build -t cve-ssh .`
   ![docker](/img/docker_build.png)
   
2. **Запустите образ**
   ```bash
   docker run -d --name cve-ssh -p 2222:2222 cve-ssh

3. **Демонстрация POC**
    ![poc](/img/poc.gif)

---
## **nuclei-template** для быстрой проверки

### **Пассивная проверка**
Пассивный шаблон ищет **косвенные признаки уязвимости**, не выполняя реальных атакующих действий.  
Он анализирует только «поверхностную» информацию, которую сервис отдает сам:
* баннер версии Erlang/OTP,
* заголовки ответа,
* другие открытые метаданные.

Если обнаружена уязвимая версия (например, OTP 25.3.2.19 или 26.2.5.10), nuclei помечает хост как **потенциально уязвимый**.  
⚠️ Такой подход безопасен: никаких вредоносных пакетов или попыток эксплуатации не производится.
```bash
nuclei -u 127.0.0.1:2222 -t erlang-passive.yaml
```

![nuclei-passive](/img/nuclei-passive.PNG)

---

### **Активная проверка**
Активный шаблон выполняет **контролируемую имитацию атаки**:  
он отправляет специально сформированные SSH-пакеты до аутентификации и проверяет, срабатывает ли уязвимость.  
Для фиксации факта эксплуатации используется **Interactsh** — если удалённый сервер выполнил вредоносный запрос, на панели Interactsh появится DNS-callback.  

✅ Такой тест подтверждает **реальную возможность удалённого выполнения кода (RCE)**,  
но проводится только в изолированной тестовой среде.

```bash
nuclei -u 127.0.0.1:2222 -t erlang-active.yaml -code
```
![nuclei-passive](/img/nuclei-active.PNG)

文件快照

[4.0K] /data/pocs/d35ec9d54b9a5539bfefb23bdbe55a9476f11354 ├── [4.0K] img │   ├── [324K] docker_build.png │   ├── [ 75K] nuclei-active.PNG │   ├── [ 71K] nuclei-passive.PNG │   ├── [139K] poc.gif │   ├── [ 56K] soobshenia.JPG │   └── [ 39K] stack_protokolov.jpg ├── [4.0K] nuclei-template │   ├── [6.1K] erlang-active.yaml │   └── [1.4K] erlang-passive.yaml ├── [4.0K] POC │   ├── [3.9K] CVE-2025-32433.py │   ├── [ 886] Dockerfile │   └── [ 588] ssh_server.erl └── [ 17K] README.md 3 directories, 12 files
神龙机器人已为您缓存
备注
    1. 建议优先通过来源进行访问。
    2. 如果因为来源失效或无法访问,请发送邮箱到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
    3. 神龙已为您对POC代码进行快照,为了长期维护,请考虑为本地POC付费,感谢您的支持。