
teste
Este documento apresenta uma pesquisa sobre a vulnerabilidade CVE-2025-32433, que afeta a implementação do servidor SSH embutido na plataforma Erlang/OTP.
Essa vulnerabilidade consiste na possibilidade de execução remota de código arbitrário (Remote Code Execution, RCE) sem necessidade de autenticação e afeta várias ramificações do Erlang/OTP até a publicação dos patches:
O Erlang/OTP é amplamente utilizado como base para sistemas distribuídos escaláveis e faz parte da stack de muitos projetos conhecidos (por exemplo, mensageiros, brokers de mensagens, serviços web de alta carga).
A presença de uma vulnerabilidade crítica de RCE na biblioteca SSH base coloca em risco a infraestrutura que utiliza Erlang/OTP como servidor ou componente com acesso SSH aberto.
Examinar passo a passo a vulnerabilidade e demonstrar o ciclo completo de pesquisa:
Coleta e estruturação de materiais:
Encontrar e sistematizar dados publicamente disponíveis sobre a CVE-2025-32433, descrever a essência e o possível impacto.
Definição de CPE e condições de configuração:
Apresentar a lista de CPE e as condições de configuração para as quais a vulnerabilidade é relevante.
Desenvolvimento de PoC/Exploit:
Criar e demonstrar um protótipo funcional de exploração em um ambiente de teste.
Metodologias de verificação em massa segura:
Descrever três formas de verificar hosts vulneráveis:
Esta pesquisa é conduzida exclusivamente para fins educacionais e éticos e foi realizada apenas em um ambiente de teste controlado.
O autor não se responsabiliza por qualquer uso indevido das informações apresentadas.
Utilize estas informações somente para aprendizado e para melhorar a segurança dos seus sistemas.
Erlang é uma linguagem de programação criada para construir sistemas altamente paralelos e tolerantes a falhas.
A sua plataforma Open Telecom Platform (OTP) é utilizada há muitos anos em infraestruturas críticas — das telecomunicações ao setor financeiro.
Em ambientes de OT (tecnologia operacional) e em redes 5G, o Erlang/OTP é valorizado pela escalabilidade e pela capacidade de garantir a operação contínua de sistemas com o mínimo de indisponibilidade.
Para administração remota, essas redes frequentemente utilizam a implementação embutida de SSH no Erlang/OTP.
É exatamente isso que torna a vulnerabilidade CVE-2025-32433 especialmente perigosa para esses ambientes.
A interação segura no Erlang/OTP é garantida pela sua própria implementação de SSH, que:
A vulnerabilidade nessa implementação permite que um atacante com acesso à rede execute código arbitrário sem autenticação, criando uma ameaça direta aos ativos vulneráveis.
De acordo com varreduras globais pela internet (Cortex Xpanse, abril de 2025), os serviços SSH Erlang/OTP vulneráveis estão amplamente disponíveis na internet e operam não apenas nas portas padrão, mas também, por exemplo, na porta TCP 2222.
Essa porta é frequentemente utilizada por componentes obsoletos de automação industrial e pelo protocolo de mensagens implícitas Ethernet/IP, o que amplia o possível vetor de ataque.
A vulnerabilidade está associada às versões de SSH incluídas nos lançamentos do Erlang/OTP.
A disseminação de serviços vulneráveis em portas características de diversos setores forma uma superfície de ataque global significativa.
A telemetria mostrou que mais de 85% das tentativas de exploração foram registradas em firewalls do segmento OT nas seguintes áreas:
Ao mesmo tempo, apesar da alta dependência de OT, nos setores de:
não foram identificados fatores que contribuíssem para a propagação ativa dessa ameaça específica.
A CVE-2025-32433 está registrada na base NVD com os seguintes 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:*:*:*:*:*:*:*São consideradas vulneráveis as versões menores abaixo das seguintes versões de patch:
- 25.x — até 25.3.2.20 inclusive
- 26.x — até 26.2.5.11 inclusive
- 27.x — até 27.3.3 inclusive
ssh:daemon/2), e não um openssh externo.22 ou personalizada, por exemplo 2222) deve estar acessível para conexões remotas a partir da rede do atacante.ssh:daemon/2.⚠️ Se o Erlang/OTP for utilizado apenas como biblioteca cliente, sem um servidor SSH ativo, ou se o servidor estiver isolado em uma rede fechada, a vulnerabilidade não é alcançável.
A vulnerabilidade surge porque o servidor SSH embutido do Erlang/OTP processa incorretamente o processo de pré-autenticação.
Dois tipos de mensagens do protocolo de conexão desempenham um papel fundamental — SSH_MSG_CHANNEL_OPEN e SSH_MSG_CHANNEL_REQUEST.
De acordo com o padrão RFC 4254, essas mensagens devem ser aceitas somente após a autenticação bem-sucedida do usuário.
Qualquer tentativa de enviá-las antes deve levar imediatamente ao encerramento da conexão.
No caso da CVE-2025-32433, o daemon SSH não garante o cumprimento dessa regra, o que permite que um atacante abra um canal de sessão e envie uma solicitação exec com um comando arbitrário sem fornecer credenciais válidas.
Em outras palavras, isso leva à execução remota de código não autenticada (RCE) — o atacante consegue assumir o controle do servidor sem saber nome de usuário, senha ou chave.

O protocolo SSH Connection opera sobre as camadas de transporte e autenticação do SSH.
Ele fornece funções de login interativo, execução remota de comandos e encaminhamento de portas.
Na implementação SSH vulnerável do Erlang/OTP, são exatamente essas duas mensagens — SSH_MSG_CHANNEL_OPEN e SSH_MSG_CHANNEL_REQUEST, necessárias para iniciar um canal e solicitar comandos — que se tornam o ponto de ataque:
o atacante pode enviar tráfego especialmente elaborado que engana o sistema para executar código arbitrário antes da conclusão da autenticação.

No âmbito da pesquisa, foi preparado um Proof-of-Concept funcional para a CVE-2025-32433.
CVE-2025-32433.py — script Python que monta manualmente pacotes SSH
(SSH_MSG_KEXINIT, SSH_MSG_CHANNEL_OPEN, SSH_MSG_CHANNEL_REQUEST) e
os envia antes da conclusão da autenticação.
Isso permite, em versões vulneráveis do Erlang/OTP, executar um comando arbitrário
no lado do servidor — no PoC, ele cria o arquivo /lab.txt com o texto cyberok.
ssh_server.erl — módulo Erlang mínimo que sobe o daemon
SSH embutido do OTP na porta 2222. Ele é necessário apenas para demonstração
e é executado dentro de um contêiner Docker.
Dockerfile — receita de construção do contêiner, na qual a versão especificada
do Erlang/OTP é compilada automaticamente e o servidor SSH de teste é iniciado.
⚠️ Este PoC é destinado exclusivamente para testes locais e fins educacionais. Não utilizar em redes de produção ou redes públicas.
Construa a imagem:
git clone https://github.com/iteride/CVE-2025-32433.git && cd CVE-2025-32433/POC/ && docker build -t cve-ssh .

Execute a imagem
docker run -d --name cve-ssh -p 2222:2222 cve-ssh
Demonstração do POC

O template passivo procura sinais indiretos de vulnerabilidade, sem realizar ações reais de ataque.
Ele analisa apenas informações "superficiais" que o próprio serviço expõe:
Se uma versão vulnerável for detectada (por exemplo, OTP 25.3.2.19 ou 26.2.5.10), o nuclei marca o host como potencialmente vulnerável.
⚠️ Essa abordagem é segura: nenhum pacote malicioso ou tentativa de exploração é realizado.
nuclei -u 127.0.0.1:2222 -t erlang-passive.yaml
O template ativo executa uma simulação controlada de ataque:
ele envia pacotes SSH especialmente elaborados antes da autenticação e verifica se a vulnerabilidade é acionada.
Para registrar o fato da exploração, é utilizado o Interactsh — se o servidor remoto executou a solicitação maliciosa, um callback DNS aparecerá no painel do Interactsh.
✅ Esse teste confirma a possibilidade real de execução remota de código (RCE),
mas é realizado somente em um ambiente de teste isolado.
nuclei -u 127.0.0.1:2222 -t erlang-active.yaml -code
Diferenças em relação ao nuclei-template:
Execução do script
⚠️ Antes de executar, certifique-se de que o interactsh-client esteja instalado e em execução
python3 babyfon.py -f targets.txt -d your.interactsh_domain

Após a execução, verifique as interações DNS no interactsh-client. (No exemplo, dois alvos são varridos: um é vulnerável, o outro já foi corrigido)



Conclusão dos testes: