Bug de envenenamento de cache da Web descoberto no framework Symfony PHP
O manuseio incorreto de cabeçalhos HTTP deixou sites construídos sobre a plataforma Symfony vulneráveis a ataques de envenenamento de cache da web.
Symfony, uma estrutura PHP popular para aplicativos da web, é um projeto de código aberto com mais de 200 milhões de downloads históricos.
A plataforma foi considerada vulnerável a ataques de envenenamento de cache da web, potencialmente expondo informações confidenciais, como endereços IP de usuários.
Os ataques de envenenamento de cache da web têm como alvo os pontos de armazenamento intermediários entre os servidores da web e os dispositivos clientes, como servidores de ponto de presença, proxies e balanceadores de carga.
Esses servidores geralmente ajudam a melhorar o desempenho dos sites, armazenando versões locais de conteúdo da web para acelerar sua entrega aos clientes da web.
Ataques de envenenamento de cache da Web enganam os servidores de cache para que armazenem conteúdo prejudicial e depois os entregue aos clientes.
Cabeçalhos de balanceamento de carga.
Agora corrigido, o bug foi causado quando um site baseado em Symfony estava rodando atrás de um proxy ou balanceador de carga. Nesses casos, os desenvolvedores podem instruir o Symfony a procurar cabeçalhos X-Forwarded-*, que fornecem informações extras sobre o cliente, como endereço IP original, protocolo e porta.
Symfony usa uma lista de permissões trusted_headers para restringir os cabeçalhos permitidos e prevenir ataques de envenenamento de cache da web. Na versão 5.2, os desenvolvedores do Symfony adicionaram suporte para o cabeçalho X-Forwarded-Prefix, que anexa informações sobre a base do caminho original da solicitação.
De acordo com um comunicado do GitHub, o bug estava no recurso de sub-solicitação, que permite aos desenvolvedores renderizar e servir uma pequena parte de uma página em vez de uma página inteira.
O cabeçalho X-Forwarded-Prefix foi processado por ‘sub-solicitações’, mesmo que não tenha sido incluído em sua lista trusted_headers.
Atores mal-intencionados podem aproveitar esse bug para conduzir ataques de envenenamento de cache da web, forjando sub-solicitações mal-intencionadas com o cabeçalho X-Forwarded-Prefix e armazenando-as em servidores de cache.
Os snippets maliciosos seriam posteriormente servidos a outros clientes que fizeram a mesma solicitação.
De longo alcance.
Pelo menos uma plataforma de e-commerce baseada no Symfony corrigiu um bug semelhante.
Não está claro quantos outros sites foram afetados, mas devido ao amplo alcance do Symfony na comunidade de desenvolvedores da Web em PHP, o impacto pode ser de longo alcance.
O Daily Swig entrou em contato com os mantenedores do Symfony para comentar. Atualizaremos este post se recebermos mais detalhes sobre o bug.
Fonte: PortSwigger/dciber.