Regra Zero de Segurança: um alerta sobre o X-Forwarded-For

Ecossistema F5 | 07 de dezembro de 2017
dp-prog-oct-17-ihealth

Os proxies operam com base na premissa de que existem para encaminhar solicitações de um sistema para outro. Em geral, eles agregam algum valor — caso contrário, não estariam no meio do caminho —, como balanceamento de carga (escalabilidade), prevenção contra vazamento de dados (segurança) ou compactação (desempenho).

A questão é que, fora isso, a solicitação enviada pelo cliente é encaminhada sem alterações ao seu destino final.

É aqui que as coisas podem ficar complicadas. Hoje, vemos que mais da metade de todos os aplicativos disponibilizados por meio de um proxy usa o X-Forwarded-For. 56% dos aplicativos reais e em produção o utilizam, o que faz dele um dado bastante relevante. X-Forwarded-For é o cabeçalho HTTP personalizado que transmite o endereço IP original de um cliente para que o aplicativo na outra ponta saiba qual é esse endereço. Caso contrário, ele veria apenas o endereço IP do proxy, e isso deixa alguns aplicativos irritados.

Isso acontece porque muitas aplicações precisam saber o endereço IP real de um cliente para ajudar a prevenir fraudes e permitir o acesso. Se você acessou recentemente sua conta bancária, do Gmail ou do Xbox (ei, é onde o Minecraft fica, certo?) usando um dispositivo diferente do habitual, talvez tenha recebido um alerta de segurança. Isso porque as informações sobre os locais de onde você acessa também são monitoradas, em parte para detectar tentativas de fraude e uso indevido.

Seu endereço IP real também é usado para permitir ou negar o acesso em alguns sistemas e como forma de determinar sua localização física. É por isso que esses avisos por e-mail costumam incluir a pergunta: “Foi você que fez login da Bulgária?”

Alguns sistemas também usam o X-Forwarded-For para aplicar o controle de acesso. O WordPress, por exemplo, usa o arquivo .htaccess para permitir o acesso com base em endereços IP. Não, essa não é a melhor solução, mas é uma prática comum, e é preciso ao menos reconhecer o esforço de tentar proteger o aplicativo contra usos indevidos.

Independentemente de ser ou não uma boa ideia, se você pretende usar X-Forwarded-For como parte do seu esquema de autenticação ou autorização, é recomendável fazer o possível para garantir que ele seja realmente o endereço IP real do cliente. Esse é um dos fatores mais usados na equação geral de segurança e protege tanto o consumidor quanto os interesses corporativos.

Mas, se você aceitar cegamente tudo o que o cliente enviar nesse cabeçalho, poderá permitir que alguém falsifique o valor e, assim, contorne os mecanismos de segurança destinados a impedir acessos ilegítimos. Afinal, posso falsificar praticamente qualquer coisa que eu quiser escrevendo algumas linhas de código ou usando um dos muitos plug-ins do Chrome que me permitem manipular cabeçalhos HTTP com facilidade.

Uma das maneiras de garantir que você esteja obtendo o endereço IP real é não confiar nas entradas do usuário. Sim, lá está ela Regra Zero de Segurança novamente. Nunca confie nas entradas do usuário. E sabemos que os cabeçalhos HTTP são entradas do usuário, pareçam ou não.

Se você já tem um proxy, ótimo. Caso contrário, é melhor providenciar um. É assim que você extrai e insere o valor correto em X-Forwarded-For e impede os falsificadores de agirem.

Basicamente, você quer que seu proxy consiga examinar uma solicitação e encontrar o endereço IP real oculto no pacote IP. Alguns proxies conseguem fazer isso por meio de configurações ou políticas; outros exigem um pouco de mágica de programação. Seja qual for a forma de obtê-lo, esse é o valor que você deve inserir no cabeçalho HTTP X-Forwarded-For e, depois, prosseguir normalmente. Isso garante que os aplicativos ou serviços subsequentes tenham informações precisas para tomar suas decisões, inclusive as relacionadas a acesso e autorização.

Para a maioria das arquiteturas e situações, isso reduzirá a possibilidade de um X-Forwarded-For falsificado ser usado para obter acesso não autorizado. Como sempre, quanto mais informações você tiver para compreender com precisão o cliente — e sua legitimidade —, maior será a segurança. Combinar o endereço IP (no X-Forwarded-For) com o tipo de dispositivo, os agentes de usuário e outros dados transmitidos automaticamente pelos protocolos HTTP e de rede proporciona um contexto mais robusto para tomar uma decisão bem fundamentada.

Mantenha-se seguro!

Recursos para lidar com X-Forwarded-For:

Compartilhar
Tags: 2017

Sobre o autor

Lori Mac Vittie
Lori Mac VittieEngenheiro Emérito e Evangelista-Chefe | F5

Lori MacVittie é engenheira distinta e evangelista-chefe no Escritório do CTO da F5, com ampla experiência em entrega de aplicações, estratégia de automação e infraestrutura. Ela é conhecida por transformar complexidade em clareza, seja definindo diretrizes para agentes de IA, analisando arquiteturas multinuvem frágeis ou investigando os limites de sistemas escaláveis. Ela acumula mais de trinta anos de experiência no setor, abrangendo desenvolvimento de aplicações, arquitetura de TI e operações de redes e sistemas. Antes de ingressar na F5, atuou como editora de tecnologia e recebeu diversos prêmios. MacVittie tem mestrado em Ciência da Computação e é uma autora prolífica, com publicações que abrangem segurança, nuvem e arquitetura empresarial. Ela também é uma entusiasta de jogos de tabuleiro e videogames, além de ter opiniões assumidamente fortes sobre queijos.

Mais publicações de Lori Mac Vittie

Publicações relacionadas no blog

Entrega e proteção de agentes de IA em fábricas de IA: F5 para a arquitetura de referência NVIDIA OpenShell para agentes de IA seguros
Ecossistema F5 | 21/10/2026

Entrega e proteção de agentes de IA em fábricas de IA: F5 para a arquitetura de referência NVIDIA OpenShell para agentes de IA seguros

As soluções da F5 ampliam a Arquitetura de Referência NVIDIA OpenShell para agentes de IA seguros.

Como medir – e minimizar – o custo total de propriedade do seu Kubernetes
Ecossistema F5 | 10/12/2020

Como medir – e minimizar – o custo total de propriedade do seu Kubernetes

O Kubernetes pode ser baixado e executado gratuitamente, mas sua manutenção está longe de não ter custos. Assim como outras grandes plataformas de código aberto que são “gratuitas” apenas em um sentido simplista, o Kubernetes quase certamente exigirá investimentos para ser implantado e operado.

As-Code: a pilha de TI contínua
Ecossistema F5 | 08/10/2018

As-Code: a pilha de TI contínua

Infraestrutura, configuração, pipeline, operações. De repente, tudo é “como código”. Lori MacVittie busca esclarecer a terminologia e identificar os diferentes componentes de uma stack contínua de TI.

O estado da entrega de aplicações em 2017: automação, APIs e DevOps
Ecossistema F5 | 17/04/2017

O estado da entrega de aplicações em 2017: automação, APIs e DevOps

Explore o relatório State of Application Delivery de 2017. Leia o blog retrospectivo da F5 sobre o início da ascensão das redes declarativas e dos pipelines de DevOps.

DevOps Summit: onde a rede foi convidada para a festa
Ecossistema F5 | 11/06/2015

DevOps Summit: onde a rede foi convidada para a festa

No DevOps Summit NY, falou-se muito não apenas sobre DevOps, mas também sobre contêineres, IoT e microsserviços. As sessões se concentraram não só na mudança cultural necessária para crescer em escala com uma abordagem DevOps, mas também fizeram questão de incluir...

F5 e Nutanix convergem em infraestrutura no .NEXT
Ecossistema F5 | 08/06/2015

F5 e Nutanix convergem em infraestrutura no .NEXT

Aplicações empresariais como Microsoft SharePoint e Exchange, juntamente com a VDI, continuam sendo a espinha dorsal da sua empresa. A produtividade, embora não seja tão atraente quanto o lucro, é um fator essencial para o sucesso das operações empresariais atuais. Deixar de...