Data de Publicação: 11 de Agosto de 2025
Autora: Patrícia Canossa Gagliardi
O Protocolo de Controle de Transmissão (TCP) é o alicerce da comunicação confiável na internet. Diferente de protocolos “dispare e esqueça” como o UDP, o TCP é orientado à conexão e confiável. Ele garante que os dados cheguem em ordem e sem erros através de dois mecanismos principais: o handshake de três vias (three-way handshake) para estabelecer uma conexão, e o uso de números de sequência para ordenar e confirmar o recebimento de pacotes. Paradoxalmente, são exatamente essas características de gerenciamento de estado e confiança na sequência de pacotes que dão origem às suas vulnerabilidades mais significativas. Este artigo detalha os três principais vetores de ataque que exploram o design fundamental do TCP.
Este é um dos ataques de Negação de Serviço (DoS) mais antigos e eficazes, visando diretamente o processo de estabelecimento de conexão do TCP.
Cliente -> [SYN] -> ServidorServidor -> [SYN/ACK] -> ClienteCliente -> [ACK] -> ServidorSYN para o servidor alvo.SYN, aloca uma parte de sua memória para a nova conexão (colocando-a em uma fila de “conexões semiabertas” no estado SYN_RECEIVED) e envia o SYN/ACK de volta para o endereço falsificado.ACK final nunca chega, as conexões semiabertas permanecem na fila do servidor, aguardando um timeout. O ataque envia pacotes SYN mais rápido do que as conexões pendentes expiram.SYN, responde com um SYN/ACK contendo um número de sequência especialmente criado (o “cookie”) que codifica os detalhes da conexão. Ele não aloca memória. Apenas quando o cliente envia o ACK final, contendo o cookie correto, é que o servidor valida a conexão e aloca os recursos.Enquanto o encerramento normal de uma conexão TCP é um processo gracioso de quatro vias (usando flags FIN), o flag RST (Reset) existe para terminar uma conexão de forma abrupta e imediata.
RST seja considerado válido pela vítima, ele não pode ser um pacote qualquer. O atacante precisa forjar um pacote com a combinação exata de: IP de Origem, Porta de Origem, IP de Destino e Porta de Destino. Além disso, e mais importante, o número de sequência do pacote RST deve estar dentro da “janela de recepção” esperada pelo host de destino.RST e encerra sua ponta da conexão instantaneamente. Isso pode ser usado para interromper seletivamente comunicações críticas, como sessões de roteamento BGP ou transações de banco de dados.Este ataque clássico visa assumir uma sessão TCP já estabelecida e autenticada, permitindo que o atacante se passe por um usuário legítimo.
Contexto Moderno: Este ataque, em sua forma pura, é hoje em grande parte teórico. No início da internet, os Números de Sequência Iniciais (ISNs) eram previsíveis. Hoje, todos os sistemas operacionais modernos implementam uma forte randomização dos ISNs, tornando a previsão dos números de sequência em uma janela de tempo útil praticamente impossível. O termo “sequestro de sessão” hoje se refere mais comumente a ataques na Camada de Aplicação, como o roubo de cookies de sessão via XSS ou MitM.
As vulnerabilidades do TCP nascem de suas maiores forças: sua capacidade de criar e manter conexões estado-financiado (stateful) e confiáveis. A história dos ataques ao TCP e suas respectivas mitigações: SYN Cookies, ISNs randomizados e a onipresença da criptografia, ilustra perfeitamente a “corrida armamentista” da cibersegurança. Cada fraqueza explorada no design de um protocolo leva ao desenvolvimento de novas defesas engenhosas, resultando em uma internet mais segura e resiliente.