
Exploit de execução remota de código pré-autenticação para o roteador TP-Link Omada ER605 através do daemon cliente DDNS (cmxddnsd)
Cadeia de exploit de Prova-de-Conceito (PoC) visando o daemon cliente DDNS (cmxddnsd) do TP-Link Omada ER605 quando o dispositivo é configurado para usar o serviço DDNS Comexe.
⚠️ Legal / Ética: Este repositório destina-se exclusivamente a pesquisa de segurança autorizada e reprodução controlada em laboratório. Não utilize contra sistemas que você não possui ou para os quais não tem permissão explícita para testar.
Esta PoC demonstra uma abordagem de encadeamento que combina:
A cadeia corresponde às seguintes vulnerabilidades publicadas:
| CVE | Advisory ZDI | Tipo (conforme descrito por ZDI/NVD) | Papel de alto nível em uma cadeia |
|---|
| CVE-2024-5244 | ZDI-24-503 | Confiança em segurança por obscuridade (mensagens DDNS podem ser acessadas/falsificadas) | Permite criar/falsificar mensagens DDNS com aparência válida |
| CVE-2024-5243 | ZDI-24-502 | Estouro de buffer no tratamento de nomes DNS | Usado para influenciar/envenenar o estado relacionado a nomes DNS e possibilitar um caminho de vazamento para contornar o ASLR |
| CVE-2024-5242 | ZDI-24-501 | Estouro de buffer baseado em pilha no tratamento de códigos de erro DDNS | Usado como primitiva de sequestro de fluxo de controle para RCE baseada em ROP |
Nota: Este README alinha a descrição CVE ↔ problema à redação do ZDI/NVD. A coreografia exata do exploit pode variar conforme a versão do firmware e detalhes de reprodução local; veja
exploit.pye notas de análise neste repositório.
< ER605(UN)_V2_2.2.42.2.2ER605(UN)_V2_2.2.4 Build 20240119 (e posteriores)A ZDI descreve o impacto como adjacente à rede quando o Comexe DDNS está ativado/configurado. Na prática, uma reprodução geralmente requer a capacidade de observar e influenciar o caminho do tráfego DDNS/DNS do roteador suficientemente para:
Este repositório intencionalmente evita fornecer orientação operacional passo a passo para alcançar esse posicionamento fora de um laboratório controlado.
┌─────────────────┐ ┌─────────────────────────┐
│ TP-Link ER605 │ │ Atacante │
│ (cmxddnsd) │ │ (configuração de lab │
│ │ │ autorizada) │
└───────┬─────────┘ └───────────┬─────────────┘
│ │
│ (1) Falsificação/suplação de mensagem │ CVE-2024-5244
│ DDNS │
│<-----------------------------------------│
│ │
│ (2) Estouro durante análise afeta estado │ CVE-2024-5243
│ relacionado a nome DNS; vazamento │
│ ocorre posteriormente no caminho de │
│ envio de consulta DNS (ex.: │
│ sndDnsQuery) para contornar ASLR │
│<-----------------------------------------│
│ │
│ (3) Estouro de código de erro para │ CVE-2024-5242
│ sequestrar fluxo de controle → ROP │
│ → system(comando) │
│<-----------------------------------------│
Separação chave:
_chkPkt para códigos de erro / tratamento de nome DNS).exploit.py — Implementação da PoC usada para reprodução em laboratório (requer preenchimento de constantes/offsets específicos da compilação).README.md — Este documento.Esta PoC requer valores específicos da compilação (ex.: offsets, localizações de gadgets, interpretação de vazamento) que dependem do firmware alvo e da libc. Esses valores são intencionalmente deixados como placeholders e devem ser derivados via análise da compilação testada.
Exemplos de placeholders (veja exploit.py):
system()Um antipadrão recorrente na lógica de análise é copiar dados de campo controlados pelo atacante usando um comprimento derivado de delimitador sem limitá-lo adequadamente ao tamanho do buffer de destino (conceitualmente):
char *end = strchr(ptr, '\x01'); // delimitador
int len = end - ptr; // comprimento influenciado pelo atacante
memcpy_or_strncpy(dest, ptr, len); // falta verificação de limites -> estouro
A PoC usa uma forma de gadget amigável ao slot de atraso MIPS:
move $t9, $s0
jalr $t9
move $a0, $s1 ; slot de atraso
Ao controlar $s0 e $s1 via sobrescrita de registros salvos, isso possibilita uma sequência compacta de chamada system(comando).
A construção prática do payload é restrita por:
\x01), eVeja exploit.py para as restrições exatas usadas nesta reprodução.
Este código e documentação são fornecidos para fins educacionais e pesquisa de segurança autorizada. Qualquer uso sem permissão explícita é proibido e pode ser ilegal.