Shopify Overexposed varre Ingresses do GKE e serviços do Cloud Run em busca de exposição
Aprofundamento CEVIU
Aprofundamento
O Overexposed, scanner interno da Shopify, procura Ingresses do GKE e serviços do Cloud Run acessíveis pela internet sem autenticação. A primeira versão lia arquivos de configuração do repositório de infraestrutura e falhou de três jeitos: gerou falsos positivos quando times configuravam anotações de autenticação por proxy diretamente, errou quando admission controllers (que reescrevem configurações na admissão, mas não rodam em todos os clusters) anulavam uma config aparentemente correta, e nunca enxergou Ingresses criados por outros repositórios ou ferramentas de plataforma. A lição dos autores: o repositório mostra a intenção, o cluster mostra o que é aplicado.
A versão atual consulta o GCP Cloud Asset Inventory em ciclos agendados, o que traz os Ingresses aceitos pelo GKE após a admissão, além de Cloud Run e load balancers. Uma segunda busca recupera políticas de acesso sem precisar de credenciais do cluster. Cada candidato recebe uma requisição anônima (HEAD, com fallback para GET, até três redirecionamentos, e variações de caminho como /ADMIN). Os resultados caem em seis veredictos: exposed, expected, protected, not found, unreachable e inconclusive. No Cloud Run, um 404 pode vir do front end do Google antes da aplicação, então vira inconclusivo, e um 403 não prova proteção. O serviço só é público se allUsers tiver o papel de invoker ou se a checagem de invoker estiver desativada. Com isso, a Shopify reduziu em cerca de 80% os veredictos inconclusivos para Ingresses em poucas semanas de ajuste. Em uma execução de julho, cerca de três em cada quatro resultados eram inconclusivos.
Por que isso importa
Para quem opera plataforma em GCP, o recado é tratar o inventário da nuvem como fonte de verdade e a análise de configuração no CI como sinal precoce. Regras que olham só allUsers dizem o que alguém quis fazer, não o que está rodando. E um scanner que faz requisições a hostnames arbitrários vira superfície de ataque: validação de IP, proteção contra DNS rebinding e restrição de egress, inclusive para endpoints de metadados, entram no projeto desde o início.
Perguntas frequentes
O que é o Shopify Overexposed?
É um scanner interno da Shopify que encontra Ingresses do GKE e serviços do Cloud Run acessíveis da internet sem autenticação. Ele parte do GCP Cloud Asset Inventory e confirma com uma requisição HTTP anônima. Cada alvo recebe um de seis veredictos.
Por que a primeira versão, baseada em arquivos do repositório, falhou?
Ela gerava falsos positivos quando times usavam anotações de autenticação por proxy diretamente. Também errava quando admission controllers reescreviam configurações em clusters específicos. Por fim, nunca via Ingresses criados fora daquele repositório.
Como o scanner trata respostas 404 e 403?
Ele não trata códigos de status como prova isolada. Em Ingress, 404 indica que o proxy respondeu e o caminho não existe. No Cloud Run, o front end do Google pode devolver 404 antes da aplicação, então o resultado é inconclusivo, e um 403 não é aceito como prova de proteção.
Como a Shopify protegeu o scanner contra SSRF?
O scanner valida todos os IPs retornados pelo DNS e rejeita endereços privados e de loopback. Conecta direto ao IP verificado para evitar DNS rebinding e repete as checagens a cada redirecionamento. Os autores recomendam ainda restringir o egress de rede, incluindo endpoints de metadados da nuvem.
Fontes
- infoq.comfonte original
- Categoria
- CEVIU DevOps
- Publicado
- 04 de novembro de 2026
- Editoria
- CEVIU DevOps

