关联漏洞
            
        
            描述
            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)** — злоумышленник способен захватить управление сервером, не зная ни имени пользователя, ни пароля, ни ключа.

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

---
## 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 .`
   
   
2. **Запустите образ**
   ```bash
   docker run -d --name cve-ssh -p 2222:2222 cve-ssh
3. **Демонстрация POC**
    
---
## **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
```

---
### **Активная проверка**
Активный шаблон выполняет **контролируемую имитацию атаки**:  
он отправляет специально сформированные SSH-пакеты до аутентификации и проверяет, срабатывает ли уязвимость.  
Для фиксации факта эксплуатации используется **Interactsh** — если удалённый сервер выполнил вредоносный запрос, на панели Interactsh появится DNS-callback.  
✅ Такой тест подтверждает **реальную возможность удалённого выполнения кода (RCE)**,  
но проводится только в изолированной тестовой среде.
```bash
nuclei -u 127.0.0.1:2222 -t erlang-active.yaml -code
```

        
        文件快照
        
            
                
 [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付费,感谢您的支持。