← Últimos artigos
💻 computer science

Prevalence of Cross-File Dependencies in Terraform and Their Resolution by Security Scanners

Este artigo analisa um conjunto de dados de Terraform em larga escala para revelar que as dependências entre arquivos são prevalentes e frequentemente envolvem recursos sensíveis à segurança, enquanto demonstra, por meio de experimentos controlados, que os scanners de segurança modernos possuem capacidades variadas, porém significativas, para resolver esses complexos relacionamentos entre múltiplos arquivos, desafiando a suposição de que eles não conseguem lidar com o raciocínio entre múltiplos arquivos.

Autores originais: Moatasem M. Draz

Publicado 2026-09-21
📖 6 min de leitura🧠 Leitura aprofundada

Autores originais: Moatasem M. Draz

Artigo original sob licença CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). ✨ Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo

No mundo digital moderno, os enormes servidores e redes que alimentam nossos aplicativos, bancos e serviços de streaming não são mais construídos à mão. Em vez disso, engenheiros escrevem instruções em uma linguagem de computador para dizer à nuvem exatamente o que construir. Essa prática é chamada de Infraestrutura como Código. Ela permite que equipes definam sistemas complexos em arquivos de texto, garantindo que cada servidor, firewall e bucket de armazenamento seja criado com a mesma precisão todas as vezes. Uma das ferramentas mais populares para esse trabalho é chamada de Terraform. Ela funciona como um leitor de plantas, pegando essas instruções de texto e transformando-as em tecnologia real e funcional. No entanto, assim como o plano de uma casa pode ser dividido em dezenas de páginas com notas referenciando outras páginas, esses arquivos de código raramente são isolados. Eles são tecidos uns aos outros, com um arquivo chamando outro, passando valores de um para o outro e construindo um sistema que só existe quando todas as peças são montadas.

A segurança desses sistemas depende da precisão dessas instruções. Um único erro no código, como deixar acidentalmente uma porta digital destrancada, pode expor dados sensíveis a toda a internet. Durante anos, pesquisadores e especialistas em segurança se preocuparam que as ferramentas projetadas para escanear essas plantas para erros pudessem ser cegas às conexões entre os arquivos. A crença predominante era que esses scanners poderiam ler apenas um arquivo por vez, perdendo os segredos perigosos escondidos nos espaços entre eles. Se um arquivo dissesse "use a configuração padrão" e outro arquivo definisse que esse padrão era "aberto para todos", o scanner poderia ver o primeiro arquivo como seguro e o segundo como seguro isoladamente, falhando em detectar a combinação perigosa. Este artigo propôs-se a testar essa suposição contra uma enorme coleção de códigos do mundo real e a ver se as ferramentas eram realmente tão limitadas quanto todos pensavam.

Os pesquisadores começaram reunindo uma vasta biblioteca de mais de 62.000 projetos públicos que utilizam Terraform. Eles queriam entender com que frequência esses projetos realmente dependem de conexões entre diferentes arquivos. Ao mapear as relações nesses projetos, descobriram que as conexões entre arquivos não são exceções raras, mas uma parte padrão de como esses sistemas são construídos. Na verdade, mais de um terço de todos os projetos estudados continha pelo menos uma conexão onde um arquivo dependia de outro. Essas conexões não estavam distribuídas uniformemente; elas estavam fortemente concentradas em um número menor de projetos complexos, enquanto muitos projetos mais simples tinham poucas ou nenhuma. A forma mais comum de esses arquivos estarem interligados era apontando para pastas compartilhadas, onde um projeto buscaria para cima ou através de sua estrutura de diretórios para encontrar uma peça comum de código de que precisava. Esse padrão mostrou que a maneira como os engenheiros organizam seu trabalho cria naturalmente uma teia de dependências que abrange muitos arquivos.

O estudo então fez uma pergunta crítica: essas conexões frequentemente levam às partes mais sensíveis de um sistema? Os pesquisadores procuraram por instâncias onde um arquivo dependia de outro arquivo que controlava configurações de segurança, como quem poderia acessar um banco de dados ou quais computadores eram permitidos para se comunicarem entre si. Eles descobriram que, em mais de 9.000 dos projetos, essas conexões entre arquivos de fato apontavam para esses controles de segurança críticos. Isso significava que a segurança desses sistemas muitas vezes dependia da capacidade de rastrear um valor de um arquivo, através de uma conexão, até uma regra de segurança em outro arquivo. Se uma ferramenta não pudesse seguir esse caminho, ela estaria olhando para a imagem errada, potencialmente perdendo uma vulnerabilidade que existia apenas devido à forma como os arquivos foram costurados.

Com o problema de escala estabelecido, os pesquisadores voltaram-se para as próprias ferramentas para ver se elas podiam realmente seguir esses caminhos. Eles projetaram um experimento controlado usando quatro dos scanners de segurança mais populares disponíveis. Criaram uma série de casos de teste que mimetizavam as conexões do mundo real que encontraram, variando de links simples entre arquivos na mesma pasta a cadeias complexas onde um valor passava por múltiplos módulos antes de atingir seu destino final. Testaram se os scanners conseguiriam detectar uma falha de segurança quando a configuração perigosa estava escondida em um arquivo diferente, ou se os scanners apenas veriam o perigo quando ele estivesse escrito diretamente no mesmo arquivo.

Os resultados desafiaram a crença de longa data de que essas ferramentas eram fundamentalmente cegas para conexões entre arquivos. O estudo descobriu que as capacidades das ferramentas não eram um simples sim ou não, mas um espectro. Cada ferramenta testada foi capaz de seguir as conexões mais simples, como uma variável definida em um arquivo e usada em outro dentro da mesma pasta. Todas detectaram com sucesso o perigo nesses cenários básicos. No entanto, conforme as conexões se tornavam mais complexas, as ferramentas começaram a divergir. Apenas um dos quatro scanners, o Checkov, foi capaz de seguir os caminhos mais intrincados, incluindo aqueles onde valores eram passados através de múltiplas camadas de módulos ou onde configurações eram sobrescritas por arquivos de configuração especiais. As outras ferramentas conseguiam lidar com os links diretos, mas frequentemente perdiam o rastro quando a conexão envolvia etapas intermediárias ou tipos de arquivos específicos, como arquivos de sobreposição de variáveis.

Essa descoberta sugere que a suposição comum de que os scanners não conseguem seguir referências entre arquivos é ampla demais para ser precisa. Não é que as ferramentas sejam incapazes da tarefa, mas sim que sua capacidade de fazê-lo varia significativamente dependendo da ferramenta específica e da complexidade da conexão. Para equipes que dependem das ferramentas que lidam apenas com os casos mais simples, há um risco real de que estejam perdendo problemas de segurança escondidos na fiação mais complexa de seu código. Os pesquisadores concluíram que, embora as ferramentas tenham progredido, a indústria precisa ser mais precisa sobre o que cada ferramenta pode e não pode ver. Em vez de assumir que uma ferramenta detectará todos os erros, as equipes devem entender os limites específicos de seu scanner escolhido, especialmente quando seu código depende de camadas profundas de conexões. O estudo fornece um mapa claro desses limites, mostrando que, embora os perigos mais simples entre arquivos sejam capturados, os mais profundos e complexos exigem uma ferramenta mais capaz ou uma abordagem diferente para garantir a segurança.

Afogado em artigos na sua área?

Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.

Experimentar Digest →