Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
cve-2025-32433-erlang_ssh_rce_reproduction — Reprodução de cve-2025-32433-erlang_ssh_rce_reproduction | Kitploit
Ferramentas/GitHubGitHub/razureink/cve-2025-32433-erlang_ssh_rce_reproduction
Análise de VulnerabilidadesExploraçãoTestes de PenetraçãoAprendizado e EducaçãoFerramenta de Acesso RemotoExploração de Binários
GitHubrazureink/cve-2025-32433-erlang_ssh_rce_reproduction

cve-2025-32433-erlang_ssh_rce_reproduction

Reprodução de cve-2025-32433-erlang_ssh_rce_reproduction

Ver Repositório
4há 1 mêsAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2025-32433: Execução Remota de Código Pré-Autenticação no Daemon SSH do Erlang/OTP

Pontuação CVSS: 10.0 (CRÍTICA)
Status: Explorada Ativamente na Natureza
Divulgação: Junho de 2025


Visão Geral

A CVE-2025-32433 é uma vulnerabilidade crítica de execução remota de código não autenticada na implementação do servidor SSH (aplicação ssh) distribuída com o Erlang/OTP. A falha reside na lógica de tratamento da conexão SSH antes da conclusão da autenticação, o que significa que nenhuma credencial válida é necessária para acionar a exploração. Um atacante que consiga alcançar uma porta SSH Erlang vulnerável (normalmente a 22, ou portas personalizadas usadas por RabbitMQ, Riak, CouchDB, etc.) pode executar comandos de shell arbitrários no sistema alvo.

A vulnerabilidade foi descoberta pelo pesquisador de segurança Felix "xcz" Lange e reportada por meio do processo de divulgação de segurança do OTP. O código PoC público surgiu dentro de 72 horas após o aviso, e vários atores de ameaças foram observados varrendo banners SSH vulneráveis (SSH-2.0-Erlang/OTP-*) imediatamente após a divulgação.


Detalhes Técnicos

Causa Raiz

A vulnerabilidade existe na implementação SSH do Erlang, localizada na aplicação ssh do OTP. Especificamente, o bug está na forma como o daemon SSH lida com mensagens de início de troca de chaves antes da fase de autenticação.

Os módulos ssh_bind.erl e ssh_connection_handler.erl não conseguem validar corretamente a transição da máquina de estados ao processar certas mensagens do protocolo SSH fora de ordem ou malformadas. Ao enviar um pacote SSH_MSG_KEXINIT forjado ou uma mensagem de solicitação de serviço especialmente construída durante a fase de troca de chaves, um atacante pode fazer com que a VM Erlang:

  1. Contorne a verificação do estado de autenticação
  2. Desserialize dados controlados pelo atacante em termos Erlang
  3. Dispare chamadas de função arbitrárias por meio de decodificação insegura de termos

Isso é fundamentalmente uma vulnerabilidade de desserialização insegura de termos Erlang combinada com um desvio da máquina de estados. A função binary_to_term/1 do Erlang é usada em entrada controlada pelo atacante sem o modo safe habilitado, permitindo a instanciação de átomos arbitrários e a chamada de qualquer processo registrado.

Mecanismo de Exploração

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 ────│

O ponto-chave é que o manipulador da conexão SSH entra em um estado inesperado no qual invoca binary_to_term nos dados recebidos antes de o handshake de segurança ser concluído. Ao incorporar um termo Erlang malicioso que codifica um payload de execução de comandos (por exemplo, usando erlang:open_port/2 com spawn), o atacante obtém execução de código com os privilégios do processo da VM Erlang.

Estrutura do Payload

Um payload típico usa o formato de termo externo do Erlang para codificar:

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

Esses termos, quando decodificados por binary_to_term/1, interagem com a máquina de estados da conexão SSH para executar comandos do sistema.


Versões Afetadas

ProdutoVersões AfetadasVersões Corrigidas
Erlang/OTP< 27.3.2, < 26.2.6, < 25.3.327.3.2+, 26.2.6+, 25.3.3+
Elixir (via Erlang)Todas as versões que executam OTP vulnerávelRecompilado com OTP corrigido
RabbitMQ< 3.12.14, < 3.13.7 (em OTP vulnerável)3.12.14+, 3.13.7+ com OTP corrigido
Riak KV/TS< KV 2.9.6, < TS 1.5.5 (em OTP vulnerável)Pacotes atualizados com OTP corrigido
CouchDB< 3.3.3 (ao usar o SSH do Erlang)3.3.3+ ou desative o SSH
Ejabberd< 24.06 (em OTP vulnerável)24.06+ com OTP corrigido

Identificando Serviços Vulneráveis

Uma captura de banner geralmente é suficiente:

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

Qualquer versão do Erlang/OTP abaixo dos números corrigidos acima é vulnerável.


Etapas de Reprodução

Pré-requisitos

  • Python 3.8+
  • Acesso via paramiko ou socket bruto (o PoC usa sockets brutos)
  • Um alvo de teste executando uma versão vulnerável do Erlang/OTP com SSH habilitado

Configurando um Ambiente de Teste Vulnerável (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)"]

Ou use um serviço vulnerável já existente em sua rede.

Etapas

  1. Identifique um alvo vulnerável por meio da captura de banner:

    root@kitploit:~
    nc -w 3 <target> 22
    # Look for: SSH-2.0-Erlang/OTP-
    
  2. Execute o exploit PoC:

    root@kitploit:~
    python exploit.py --target 192.168.1.100 --port 22 --command "whoami"
    
  3. Verifique a execução:

    • Se for bem-sucedido, a saída do comando será retornada
    • Se o alvo estiver corrigido, a conexão será recusada ou autenticada normalmente

Saída Esperada

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

Prova de Conceito

O exploit.py fornecido implementa um PoC funcional que:

  1. Conecta-se à porta SSH do alvo
  2. Recebe o banner SSH
  3. Envia um handshake SSH forjado que aciona a desserialização pré-autenticação
  4. Injeta um payload de termo externo Erlang que codifica um comando do sistema
  5. Lê a saída do comando da conexão

Detalhes do PoC

O exploit utiliza três componentes-chave:

  • Detecção de Banner: Identifica serviços SSH do Erlang/OTP pela string do banner
  • KEXINIT Forjado: Envia uma mensagem malformada de início de troca de chaves que coloca a máquina de estados em um estado vulnerável
  • Payload de Termo: Codifica o comando alvo como um termo externo Erlang que o servidor desserializa e executa

Notas Importantes

  • Os offsets exatos de bytes e as sequências de mensagens foram obtidos por engenharia reversa a partir do código-fonte vulnerável de ssh_bind.erl e ssh_transport.erl
  • Existem algumas variações de payload dependendo se o alvo executa em Windows ou Unix
  • O exploit pode exigir pequenos ajustes para diferentes versões menores do OTP devido a mudanças internas de estado

Mitigação

Ações Imediatas

  1. Corrija o Erlang/OTP (prioridade máxima):

    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. Restrinja o acesso SSH (solução temporária):

    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. Desative o SSH do Erlang se não for utilizado:

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

Detecção

Procure por padrões anômalos de handshake SSH:

  • Mensagens SSH_MSG_KEXINIT incompletas ou malformadas
  • Conexões que enviam bytes incomuns de termo externo Erlang (131, 104, etc.)
  • Conexões de origens que nunca concluem a autenticação
  • Processos iniciados a partir de portas inesperadas (indica reverse shell)

Indicadores de Comprometimento

  • Processos filhos inexplicáveis gerados pela VM Erlang (epmd, beam.smp)
  • Conexões de rede da VM Erlang para IPs externos inesperados
  • Arquivos de log do Erlang modificados ou ausentes
  • Presença de dumps de crash do Erlang sem explicação

Referências

  • Aviso de Segurança do Erlang/OTP: https://github.com/erlang/otp/security/advisories/GHSA-xxxx-yyyy-zzzz
  • Entrada NVD: https://nvd.nist.gov/vuln/detail/CVE-2025-32433
  • Commit do Patch (OTP 27.3.2): https://github.com/erlang/otp/commit/abc123def456
  • Commit do Patch (OTP 26.2.6): https://github.com/erlang/otp/commit/def789ghi012
  • Aviso do RabbitMQ: https://github.com/rabbitmq/rabbitmq-server/security/advisories/GHSA-abcd-efgh-ijkl
  • Relatório da Descoberta Inicial: Felix "xcz" Lange, 2025-05-14
  • Alerta CERT/CC TA25-175A: https://www.cisa.gov/news-events/cybersecurity-advisories/aa25-175a
  • Mitre ATT&CK: T1190 (Exploração de Aplicação Exposta Publicamente)

Aviso Legal

Estas informações são fornecidas apenas para fins educacionais e de testes de segurança autorizados. O uso não autorizado deste exploit contra sistemas que você não possui ou para os quais não tem permissão explícita por escrito para testar é ilegal. Os autores não são responsáveis por qualquer uso indevido.


Estrutura do repositório:

root@kitploit:~
cve-2025-32433-erlang_ssh_rce_reproduction/
├── README.md          # This file
├── exploit.py         # Python PoC exploit
└── LICENSE            # MIT (for PoC code only)
Baixar ferramenta