Skip to content
tutorials

O segredo de 20 anos do PHP finalmente foi revelado

Um bug silencioso no PHP tem vazado credenciais sensíveis por mais de duas décadas, inclusive de HTTPS para HTTP. A correção oficial finalmente chegou, mas uma lacuna crítica significa que suas chaves de API personalizadas ainda podem estar expostas.

Marcus Lee
O segredo de 20 anos do PHP finalmente foi revelado

A armadilha de redirecionamento de duas décadas

Por duas décadas, uma falha de segurança sutil, porém significativa, no PHP comprometeu silenciosamente inúmeras aplicações. Desde 2003, a amplamente utilizada função file_get_contents, destinada a buscar conteúdo de URLs, seguia automaticamente redirecionamentos HTTP sem questionar. Esse recurso aparentemente inofensivo criou uma vulnerabilidade grave, expondo inadvertidamente dados sensíveis dos usuários.

Quando um script usava file_get_contents para acessar uma API e incluía um Authorization header (contendo bearer tokens ou outras credenciais), o PHP encaminhava cegamente esse cabeçalho para qualquer novo domínio especificado em um redirecionamento. O sistema assumia que o novo destino era confiável, continuando a enviar detalhes de autenticação mesmo se o redirecionamento apontasse para um servidor completamente diferente.

O cenário mais perigoso envolvia um downgrade de HTTPS para HTTP. Se uma solicitação segura inicial fosse redirecionada para um endpoint HTTP não criptografado, o PHP ainda enviava os tokens sensíveis. Isso significava que as credenciais, originalmente protegidas por TLS, viajavam completamente sem criptografia pela rede, tornando-as trivialmente interceptáveis por agentes mal-intencionados. Esse mecanismo de encaminhamento silencioso colocou inúmeras aplicações em risco.

O patch chegou, mas não é perfeito

O problema central era o encaminhamento silencioso de dados sensíveis pelo PHP durante redirecionamentos. Felizmente, um novo patch finalmente aborda esse problema de décadas, introduzindo uma verificação de segurança crítica. Agora, se um redirecionamento altera o esquema (como de HTTP para HTTPS), host ou porta, o PHP inteligentemente remove os cabeçalhos Authorization e Cookie. Essa intervenção crucial impede que suas credenciais sensíveis viajem inadvertidamente para um novo servidor não intencional e potencialmente malicioso.

Para se beneficiar desta atualização de segurança crucial, os desenvolvedores devem atualizar suas instalações PHP prontamente. A correção está disponível nas versões de patch mais recentes para as versões do PHP 8.2 a 8.5. Atualizar garante que seu servidor execute uma versão que protege ativamente contra esse vazamento específico de credenciais, fechando uma lacuna de segurança significativa que existia há anos.

Crucialmente, este patch não resolve todos os cenários de vazamento de credenciais. A correção oficial aplica-se apenas aos cabeçalhos padrão Authorization e Cookie, que são amplamente reconhecidos. Quaisquer cabeçalhos personalizados que você possa usar, como uma X-API-Key ou outros tokens sob medida, permanecem vulneráveis à mesma armadilha de redirecionamento. Essas credenciais personalizadas ainda serão encaminhadas automaticamente para o novo servidor, exigindo um manuseio manual cuidadoso.

Por que o Guzzle salvou o Laravel (E como salvar a si mesmo)

Muitos desenvolvedores que usam o cliente HTTP do Laravel ou a biblioteca subjacente Guzzle já estavam protegidos contra essa vulnerabilidade de duas décadas. O Guzzle, um cliente HTTP robusto, gerencia redirecionamentos com uma mentalidade de segurança em primeiro lugar. Ele evita explicitamente encaminhar cegamente cabeçalhos sensíveis como Authorization ou Cookie ao redirecionar para um esquema, host ou porta diferente, oferecendo uma abordagem muito mais segura do que a função nativa file_get_contents do PHP.

O novo patch do PHP (disponível nas versões 8.2 a 8.5) aborda os cabeçalhos Authorization e Cookie, mas não cobre tudo. Quaisquer cabeçalhos personalizados que você enviar, como uma X-API-Key, ainda serão encaminhados durante um redirecionamento, potencialmente vazando credenciais sensíveis. Para protegê-los verdadeiramente, você deve desativar os redirecionamentos automáticos do PHP definindo a opção de contexto follow_location como false para o file_get_contents.

Implementar sua própria lógica de redirecionamento seguro requer passos cuidadosos. Inspecione manualmente a resposta HTTP para um código de status 30x. Se ocorrer um redirecionamento, extraia o cabeçalho Location para obter a nova URL. Crucialmente, valide o domínio desta nova URL em relação à sua lista de confiança antes de iniciar uma nova solicitação. Esta nova solicitação deve excluir explicitamente quaisquer cabeçalhos personalizados confidenciais, garantindo que suas credenciais nunca cheguem a um destino não intencional. Para mais contexto sobre correções relacionadas, veja CVE-2026-91766: PHP had the redirect credential leak curl fixed in 2018.

Gostando do artigo? Receba um assim na sua caixa de entrada toda manhã.

um e-mail por dia · cancele em dois cliques · sem rastreadores de terceiros

O Novo Capítulo de Segurança do PHP

A persistência de duas décadas deste bug de redirecionamento no PHP oferece uma lição clara sobre as complexidades de manter linguagens maduras. Funcionalidades principais, como file_get_contents, incorporadas profundamente por anos, podem esconder vulnerabilidades sutis que escapam à detecção mesmo à medida que a linguagem evolui. Descobrir e corrigir problemas de 2003 agora mostra o imenso desafio de garantir a segurança em uma base de código vasta e de longa duração.

Apesar das narrativas perenes de que "o PHP morreu", esta correção crucial para as versões 8.2 a 8.5 ressalta o desenvolvimento vibrante e contínuo da linguagem. O Modern PHP, particularmente com frameworks robustos como Laravel, entrega consistentemente aplicações de alta qualidade, provando sua relevância duradoura. Seu ecossistema poderoso, com bibliotecas como Guzzle lidando com redirecionamentos de forma segura por padrão, frequentemente fornece salvaguardas integradas.

Em última análise, a comunidade do PHP demonstrou seu compromisso inabalável em modernizar e proteger a linguagem com este patch. Abordar uma vulnerabilidade legada que durou duas décadas reforça a confiança e mostra melhorias proativas de segurança. Essa dedicação garante que o PHP continue sendo uma escolha poderosa e relevante para o desenvolvimento web, adaptando-se constantemente a novos cenários de segurança e construindo uma base mais forte para o futuro.

Perguntas Frequentes

O que foi o bug de vazamento de cabeçalho de autorização do PHP?

Por mais de 20 anos, funções do PHP como file_get_contents seguiam automaticamente redirecionamentos HTTP e encaminhavam cabeçalhos confidenciais, como Authorization, para o novo destino. Isso poderia acontecer mesmo se o redirecionamento fosse para um servidor diferente ou de HTTPS seguro para HTTP inseguro.

Quais versões do PHP possuem a correção?

O patch está disponível nas versões mais recentes do PHP 8.2, 8.3, 8.4 e 8.5. Você deve atualizar para a versão de patch mais recente dentro dessas séries para estar protegido.

O novo patch do PHP corrige todos os vazamentos de cabeçalho?

Não. A correção oficial apenas remove os cabeçalhos padrão Authorization e Cookie durante redirecionamentos entre domínios. Cabeçalhos personalizados, como X-Api-Key, não são removidos e continuarão sendo vazados.

O Laravel foi afetado por este bug do PHP?

Não. O cliente HTTP padrão do Laravel é construído sobre o Guzzle, que implementa sua própria lógica de tratamento de redirecionamento mais segura. O Guzzle não encaminha cabeçalhos confidenciais para hosts diferentes, portanto, as aplicações Laravel não estavam vulneráveis a este problema específico.

Found this useful? Share it.

For builders

Want Stork to write one of these about your product?

Send us a URL. We use the product, form a view, and publish what we actually think — in 8 languages, labeled Sponsored, with no copy approval on your side. That last part is what makes it worth quoting.

See how it works$500 · AI tools & software only

Para builders

Esta página está trabalhando para a ferramenta de outra pessoa.

Agentes de IA leem. Compradores chegam nela. Ela responde em oito idiomas e via MCP. Sua ferramenta pode ter uma assim — no ar em 24 horas.