
prueba
En este documento se presenta una investigación de la vulnerabilidad CVE-2025-32433, que afecta a la implementación del servidor SSH integrado en la plataforma Erlang/OTP.
Esta vulnerabilidad consiste en la posibilidad de ejecución remota de código arbitrario (Remote Code Execution, RCE) sin necesidad de autenticación y afecta a varias ramas de Erlang/OTP hasta la publicación de los parches:
Erlang/OTP se utiliza ampliamente como base para sistemas distribuidos escalables y forma parte del stack de muchos proyectos conocidos (por ejemplo, mensajeros, brokers de mensajes, servicios web de alta carga).
La presencia de una vulnerabilidad RCE crítica en la biblioteca base de SSH pone en riesgo a la infraestructura que utiliza Erlang/OTP como servidor o como componente con acceso SSH abierto.
Examinar paso a paso la vulnerabilidad y demostrar el ciclo completo de investigación:
Recopilación y estructuración de materiales:
Encontrar y sistematizar los datos disponibles públicamente sobre CVE-2025-32433, describir la esencia y el posible impacto.
Determinación de CPE y condiciones de configuración:
Proporcionar una lista de CPE y condiciones de configuración para las que la vulnerabilidad es relevante.
Desarrollo de PoC/Exploit:
Crear y demostrar un prototipo funcional de explotación en un entorno de pruebas.
Metodologías de verificación masiva segura:
Describir tres formas de comprobar los hosts vulnerables:
Esta investigación se lleva a cabo exclusivamente con fines educativos y éticos y se ha realizado únicamente en un entorno de pruebas controlado.
El autor no se hace responsable de cualquier uso indebido de la información presentada.
Utilice esta información solo para aprender y mejorar el nivel de seguridad de sus sistemas.
Erlang es un lenguaje de programación creado para construir sistemas altamente paralelos y tolerantes a fallos.
Su plataforma Open Telecom Platform (OTP) se ha utilizado durante muchos años en infraestructuras críticas, desde las telecomunicaciones hasta el sector financiero.
En entornos OT (tecnologías operativas) y en redes 5G, Erlang/OTP se valora por su escalabilidad y su capacidad para garantizar el funcionamiento continuo de los sistemas con un tiempo de inactividad mínimo.
Para la administración remota, estas redes suelen utilizar la implementación integrada de SSH en Erlang/OTP.
Precisamente esto hace que la vulnerabilidad CVE-2025-32433 sea especialmente peligrosa para dichos entornos.
La interacción segura en Erlang/OTP está garantizada por su propia implementación de SSH, que:
La vulnerabilidad en esta implementación permite a un atacante con acceso a la red ejecutar código arbitrario sin autenticación, lo que supone una amenaza directa para los activos vulnerables.
Según el escaneo global de Internet (Cortex Xpanse, abril de 2025), los servicios SSH de Erlang/OTP vulnerables están ampliamente disponibles en Internet y no solo se ejecutan en los puertos estándar, sino también, por ejemplo, en el puerto TCP 2222.
Este puerto es utilizado a menudo por componentes obsoletos de automatización industrial y por el protocolo de mensajería implícita Ethernet/IP, lo que amplía el posible vector de ataque.
La vulnerabilidad está relacionada con las versiones de SSH incluidas en los lanzamientos de Erlang/OTP.
La propagación de servicios vulnerables en puertos característicos de diversos sectores conforma una superficie de ataque global significativa.
La telemetría mostró que más del 85 % de los intentos de explotación se registraron en los cortafuegos del segmento OT de los siguientes sectores:
Al mismo tiempo, a pesar de la alta dependencia de OT, en los sectores:
no se identificaron factores que favorecieran la propagación activa de esta amenaza en particular.
CVE-2025-32433 está registrada en la base de datos NVD con los siguientes CPE típicos (Common Platform Enumeration):
cpe:2.3:a:erlang:otp:25:*:*:*:*:*:*:*cpe:2.3:a:erlang:otp:26:*:*:*:*:*:*:*cpe:2.3:a:erlang:otp:27:*:*:*:*:*:*:*Se consideran vulnerables las versiones menores anteriores a las siguientes versiones de parche:
- 25.x — hasta 25.3.2.20 inclusive
- 26.x — hasta 26.2.5.11 inclusive
- 27.x — hasta 27.3.3 inclusive
ssh:daemon/2), no un openssh externo.22 o uno personalizado, por ejemplo 2222) debe ser accesible para conexiones remotas desde la red del atacante.ssh:daemon/2.⚠️ Si Erlang/OTP se utiliza solo como biblioteca cliente sin un servidor SSH activo, o si el servidor está cerrado en una red aislada, la vulnerabilidad no es explotable.
La vulnerabilidad se debe a que el servidor SSH integrado de Erlang/OTP procesa incorrectamente el proceso de preautenticación.
Dos tipos de mensajes del protocolo de conexión desempeñan un papel clave: SSH_MSG_CHANNEL_OPEN y SSH_MSG_CHANNEL_REQUEST.
Según el estándar RFC 4254, estos mensajes deben aceptarse solo después de la autenticación exitosa del usuario.
Cualquier intento de enviarlos antes debe provocar inmediatamente el cierre de la conexión.
En el caso de CVE-2025-32433, el demonio SSH no garantiza el cumplimiento de esta regla, lo que permite a un atacante abrir un canal de sesión y enviar una solicitud exec con un comando arbitrario sin proporcionar credenciales válidas.
En otras palabras, esto conduce a una ejecución remota de código no autenticada (RCE): el atacante puede tomar el control del servidor sin conocer ni el nombre de usuario, ni la contraseña, ni la clave.

El protocolo SSH Connection funciona sobre los niveles de transporte y autenticación de SSH.
Proporciona funciones de inicio de sesión interactivo, ejecución remota de comandos y reenvío de puertos.
En la implementación vulnerable de SSH en Erlang/OTP, precisamente estos dos mensajes — SSH_MSG_CHANNEL_OPEN y SSH_MSG_CHANNEL_REQUEST, necesarios para iniciar el canal y solicitar comandos— se convierten en el punto de ataque:
el atacante puede enviar tráfico especialmente diseñado que engaña al sistema para que ejecute código arbitrario antes de pasar la autenticación.

En el marco de la investigación se ha preparado un Proof-of-Concept funcional para CVE-2025-32433.
CVE-2025-32433.py — script de Python que forma manualmente paquetes SSH
(SSH_MSG_KEXINIT, SSH_MSG_CHANNEL_OPEN, SSH_MSG_CHANNEL_REQUEST) y
los envía antes de pasar la autenticación.
Esto permite ejecutar un comando arbitrario en el lado del servidor en las versiones vulnerables de Erlang/OTP: en el PoC se crea el archivo /lab.txt con el texto cyberok.
ssh_server.erl — módulo mínimo de Erlang que levanta el
demonio SSH integrado de OTP en el puerto 2222. Solo es necesario para la demostración
y se ejecuta dentro de un contenedor Docker.
Dockerfile — receta de construcción del contenedor, en la que se compila automáticamente
la versión indicada de Erlang/OTP y se inicia el servidor SSH de prueba.
⚠️ Este PoC está pensado exclusivamente para pruebas locales y fines educativos. No utilizarlo en redes productivas o públicas.
Construya la imagen:
git clone https://github.com/iteride/CVE-2025-32433.git && cd CVE-2025-32433/POC/ && docker build -t cve-ssh .

Ejecute la imagen
docker run -d --name cve-ssh -p 2222:2222 cve-ssh
Demostración del PoC

La plantilla pasiva busca indicios indirectos de vulnerabilidad sin realizar acciones de ataque reales.
Solo analiza la información «superficial» que el propio servicio expone:
Si se detecta una versión vulnerable (por ejemplo, OTP 25.3.2.19 o 26.2.5.10), nuclei marca el host como potencialmente vulnerable.
⚠️ Este enfoque es seguro: no se envían paquetes maliciosos ni se realizan intentos de explotación.
nuclei -u 127.0.0.1:2222 -t erlang-passive.yaml
La plantilla activa realiza una simulación controlada del ataque:
envía paquetes SSH especialmente formados antes de la autenticación y comprueba si la vulnerabilidad se activa.
Para registrar el hecho de la explotación se utiliza Interactsh: si el servidor remoto ha ejecutado la solicitud maliciosa, aparecerá un DNS-callback en el panel de Interactsh.
✅ Esta prueba confirma la posibilidad real de ejecución remota de código (RCE),
pero solo se lleva a cabo en un entorno de pruebas aislado.
nuclei -u 127.0.0.1:2222 -t erlang-active.yaml -code
Diferencias respecto a nuclei-template:
Ejecución del script
⚠️ Antes de ejecutarlo, asegúrese de que interactsh-client esté instalado y en ejecución
python3 babyfon.py -f targets.txt -d your.interactsh_domain

Después de la ejecución, comprobamos las interacciones DNS en interactsh-client. (En el ejemplo se escanean dos objetivos: uno es vulnerable y el otro ya está parcheado)



Conclusión de las pruebas: