Falha de 29 anos no Squid podia vazar dados sensíveis de usuários
- Cyber Security Brazil
- há 2 dias
- 4 min de leitura

Uma vulnerabilidade de vazamento de memória no Squid, popular servidor proxy de cache open source, permaneceu sem detecção por 29 anos e poderia expor requisições HTTP em texto claro, incluindo credenciais, tokens de sessão e outros dados sensíveis. A falha foi apelidada de Squidbleed e comparada ao Heartbleed por permitir a leitura indevida de dados da memória.
O problema foi identificado por pesquisadores de segurança com apoio do Mythos Preview, da Anthropic, e reportado aos mantenedores do projeto Squid, que corrigiram o código no início de junho. A vulnerabilidade é rastreada como CVE-2026-47729 e foi corrigida no Squid v7.6, lançado em 8 de junho.
O Squid é amplamente usado por grandes empresas, escolas, provedores de internet e outras organizações para armazenar em cache, filtrar e monitorar tráfego de rede. O pesquisador Lam Jun Rong, da Calif.io, afirmou ter se deparado com o proxy open source enquanto tentava se conectar à internet durante um voo. Segundo ele, a versão do Squid usada naquele avião tinha quase dez anos e estava vulnerável ao problema que viria a ser documentado.
Rong relatou a falha aos mantenedores do Squid em abril. Após a publicação inicial do artigo original, também foi informado que outro pesquisador havia encontrado o bug antes: Pavel Kohout, da Aisle, identificou e reportou a vulnerabilidade em 4 de março, antes do relatório inicial da Calif.io.
A Calif.io já havia chamado atenção anteriormente por pesquisas como a HTTP/2 Bomb, descoberta com apoio do agente Codex da OpenAI. A empresa também colaborou com a OpenAI na iniciativa Patch the Planet, anunciada recentemente, voltada à identificação e correção de vulnerabilidades em larga escala.
De acordo com Rong, a Squidbleed pode vazar memória interna de todas as versões do Squid em configuração padrão, desde que duas condições estejam presentes. A primeira é que o Squid consiga ler e inspecionar o tráfego de rede, o que significa que ele precisa estar processando HTTP em texto claro ou operando em cenários nos quais termina conexões TLS.
A segunda condição é que o proxy tenha permissão para alcançar um servidor FTP controlado por um atacante pela porta TCP 21. O FTP, ou File Transfer Protocol, é um protocolo antigo para transferência de arquivos entre sistemas. Embora tenha perdido espaço e seja considerado inadequado para muitos usos modernos, o Squid ainda oferece suporte a esse tipo de tráfego, e é justamente nesse ponto que a vulnerabilidade aparece.
O bug está no parser de listagem de diretórios FTP do Squid. A falha foi introduzida no código open source em um commit de 1997, identificado como bb97dd37a, criado para oferecer suporte a servidores NetWare antigos.
O NetWare foi um sistema operacional de rede popular nas décadas de 1980 e 1990, usado principalmente para serviços de arquivos e impressão em redes locais antes da ampla dominância de servidores Windows e Linux. Servidores FTP baseados em NetWare adicionavam espaços extras entre o timestamp de modificação e o nome do arquivo, diferentemente da maioria dos servidores FTP, que usavam apenas um espaço.
O commit de 1997 tentou resolver essa diferença instruindo o código a ignorar os espaços adicionais. Para isso, usava um loop baseado em strchr para avançar o ponteiro enquanto encontrasse caracteres de espaço. O problema surge quando um servidor FTP controlado pelo atacante não fornece um nome de arquivo após o timestamp de modificação.
Nesse cenário, o ponteiro copyFrom passa a apontar para o caractere NUL que marca o fim da string. Como a função strchr também trata esse terminador como parte da string pesquisada, ela retorna um ponteiro em vez de NULL. O loop, então, não para no momento correto e avança além do fim do buffer.
Como consequência, a função xstrdup copia o conteúdo que aparece depois daquela região de memória e o devolve ao atacante como se fosse um nome de arquivo. O resultado é um heap overread, uma leitura indevida de memória heap, que pode revelar dados processados pelo proxy.
O impacto é relevante porque o Squid pode estar manipulando requisições HTTP em texto claro. Essas requisições frequentemente incluem informações sensíveis, como senhas, chaves de API, tokens de sessão, cookies e outros dados enviados por aplicações ou usuários. Rong demonstrou a exploração em uma prova de conceito.
A correção, segundo o pesquisador, é simples: verificar a presença do terminador nulo antes de chamar strchr. Apesar da simplicidade do patch, a falha permaneceu escondida desde a década de 1990, em uma área de compatibilidade com tecnologias legadas que ainda podia afetar implantações modernas.
O caso mostra como trechos antigos de código, mantidos por compatibilidade com sistemas praticamente abandonados, podem permanecer ativos em softwares amplamente usados. Mesmo recursos pouco utilizados, como suporte a FTP em proxies modernos, podem manter superfícies de ataque relevantes quando expostos a tráfego controlado por invasores.
A recomendação principal para administradores é atualizar o Squid para a versão v7.6 ou posterior, que inclui a correção para a CVE-2026-47729. Organizações que usam versões antigas devem revisar seus pacotes e confirmar se o patch foi aplicado pela distribuição ou pelo fornecedor responsável.
Além da atualização, Rong recomenda desabilitar o suporte a FTP no Squid, exceto quando houver uma necessidade específica e incomum. Navegadores baseados em Chromium deixaram de oferecer suporte a FTP há anos, e, para a maioria das organizações, o volume de tráfego FTP legítimo tende a ser próximo de zero.
Desativar esse recurso remove uma superfície de ataque inteira sem grande impacto operacional na maior parte dos ambientes. Em redes corporativas, escolares e de provedores, a medida também ajuda a reduzir o risco associado a protocolos antigos que continuam habilitados por padrão ou por herança de configuração.
A Squidbleed reforça uma lição recorrente em segurança: vulnerabilidades críticas nem sempre estão em funcionalidades novas ou complexas. Às vezes, elas permanecem em caminhos de código criados décadas atrás, ligados a tecnologias legadas, protocolos obsoletos e comportamentos de compatibilidade que raramente recebem atenção.


