RCE pré-autenticação é divulgada no TightVNC Viewer
Discussão no r/netsec relata execução remota de código antes da autenticação no TightVNC Viewer. O item não cita versões afetadas nem correção disponível. Usuários devem aguardar um aviso oficial antes de conectar o viewer a servidores desconhecidos.
O que aconteceu
O TightVNC Viewer, ferramenta de acesso remoto comum em suporte técnico, permite que um servidor VNC malicioso execute código no computador do atendente antes de qualquer pedido de senha. A falha foi divulgada publicamente com detalhes técnicos e código de exploração. Segundo a pesquisa, o fabricante já corrigiu o problema, mas sem aviso de segurança.
Por que importa
No modo de escuta, descrito como implantação típica de help desk, o programa escuta em 0.0.0.0:5500 sem senha e sem restrição de IP: qualquer pessoa na rede pode atacar. Também basta o atendente conectar a um servidor controlado pelo atacante para a máquina ser comprometida antes do prompt de senha. O resultado é execução de código na estação do operador.
O que fazer
Atualize o TightVNC Viewer para a versão mais recente agora; a versão corrigida não foi citada. Bloqueie a porta 5500 na rede e desative o modo de escuta onde não for necessário. Oriente as equipes a conectar somente em servidores VCN conhecidos e confiáveis.
Para o time técnico
- Afetados
- TightVNC Viewer · TightVNC 2.8.88 x64 (versão citada pela SSD Secure Disclosure).
- Exploração
- Detalhes técnicos e script de exploração (tvnexploit.py) publicados pela SSD Secure Disclosure em 29 de outubro de 2026, com crédito a SeongJoon Cho (SSD Labs Korea). Sem relato de exploração em campo nas fontes.
- Correção
- A SSD afirma que o fornecedor corrigiu a vulnerabilidade em 3 de outubro de 2026, sem mencionar correção de segurança; versão corrigida não citada. Mitigação enquanto não atualizar: não usar modo de escuta, bloquear a porta 5500 e conectar somente a servidores confiáveis.
- Vetor
- TightVNC Viewer (tvnviewer.exe), corrupção de memória por truncamento de inteiro. Em rfb/FrameBuffer.cpp, getBufferSize calcula o tamanho em 64 bits e trunca com cast para int: geometria anunciada de 32768x32769 a 32bpp gera alocação de 128 KB atrás de um canvas lógico de 4 GB. getBufferPtr calcula o offset de escrita em int de 32 bits, usando a largura anunciada, sem checagem de limites: escrita controlada pelo servidor em qualquer offset com sinal a partir do framebuffer. Autenticação RFB é unidirecional e o viewer aceita security type None. Condições: modo de escuta (tvnviewer.exe -listen ou GUI, binds 0.0.0.0:5500, sem senha nem restrição de IP) ou conexão de saída a servidor controlado pelo atacante, com comprometimento no connect, antes do prompt de senha.
- Mais detalhes
- Cadeia: handshake RFB oferecendo security type None; ServerInit com 32768x32769 aloca o buffer truncado de 128 KB (FB1); escrita fora dos limites envenena m_dataLength em FB1-0x440; o próximo flush devolve cerca de 100 KB de heap adjacente, vazando a base de tvnviewer.exe (RVAs 0xB6330, 0xEA950, 0xAC740) e FB1, quebrando ASLR; objeto falso e cadeia ROP gravados em FB1; sobrescrita do ponteiro de vtable do BufferedOutputStream em FB1-0x18AF0; pivot de pilha em +0x06354A e CreateProcessW. Binário com ASLR e DEP ativos, sem CFG. Caminho de escrita: RemoteViewerCore::receiveFbUpdateRectangle pelos decoders Raw, Tight e DecoderOfRectangle::copy. A SSD afirma não ter recebido qualquer resposta do fornecedor ao relato.
Linha do tempo
Incidente aberto.
Fontes 1 fonte
- TightVNC Viewer Pre-auth RCE r/netsec


