Falha pré-autenticação no TightVNC Viewer permite execução remota de código
Pesquisador da SSD Labs Korea demonstrou execução remota de código no TightVNC Viewer 2.8.88 x64 via servidor RFB malicioso que anuncia tela de 32768 × 32769 a 32bpp. A falha é explorável antes da autenticação; no modo de escuta, o Viewer aceita conexões em 0.0.0.0:5500 sem restrição de IP ou senha. A fonte não informa correção: evite conectar o Viewer a servidores desconhecidos e proteja a porta 5500.
O que aconteceu
Um pesquisador da SSD Labs Korea demonstrou que o TightVNC Viewer 2.8.88 x64 permite execução remota de código por um servidor malicioso, antes de qualquer pedido de senha. No modo de escuta, o programa aceita conexões na porta 5500 sem restrição de IP ou senha.
Por que importa
Um atacante que alcance a porta 5500 ou controle o servidor ao qual o funcionário conecta pode executar comandos na máquina, sem interação do usuário. O acesso remoto e o suporte técnico, cenários citados pela fonte, viram porta de entrada para o atacante.
O que fazer
Bloqueie o acesso externo à porta 5500, oriente as equipes a não conectar o Viewer a servidores desconhecidos, inclusive de suporte técnico, e verifique com o fabricante se já existe versão corrigida.
Para o time técnico
- Afetados
- TightVNC Viewer 2.8.88 x64 · TightVNC Viewer 2.8.88 x64.
- Exploração
- Prova de conceito demonstrada por SeongJoon Cho, da SSD Labs Korea. Sem relato de exploração em campo na fonte.
- Correção
- Fonte não informa correção. O trecho sobre a resposta do fabricante está cortado ('the vendor fi'), sem conteúdo verificável.
- Vetor
- FrameBuffer::getBufferSize no TightVNC Viewer calcula o tamanho com aritmética de 64 bits, converte para int de 32 bits e aloca 128 KB em vez de mais de 4 GB; getBufferPtr gera offsets de 32 bits sem checar o buffer alocado, permitindo escrita além do framebuffer com offsets positivos e negativos controlados pelo atacante. Gatilho: servidor RFB malicioso que anuncia tela de 32768 × 32769 a 32bpp. Exploração pré-autenticação: o Viewer não autentica o servidor e aceita o tipo de segurança None. No modo de escuta (tvnviewer.exe -listen), escuta em 0.0.0.0:5500 sem restrição de IP ou senha, com RCE sem interação do usuário.
- Mais detalhes
- Cadeia do exploit: para desviar do ASLR, sobrescreve m_dataLength em um objeto BufferedOutputStream e força flush a devolver regiões adjacentes de heap pela conexão, vazando ponteiros que revelam a base de tvnviewer.exe; em seguida coloca um objeto falso e uma cadeia ROP no buffer, sobrescreve o ponteiro de vtable do BufferedOutputStream e usa uma chamada virtual para fazer pivot da pilha para o framebuffer; a ROP chama CreateProcessW. Em conexões de saída, o comprometimento ocorre ao conectar a servidor controlado pelo atacante, inclusive servidor falso de suporte técnico ou porta sequestrada, antes do pedido de senha.
Linha do tempo
Incidente aberto.
Fontes 1 fonte
- @ptdbugs @ptdbugs



