Ferramentas para evitar fugas nos repositórios de código público | CIO
Por Daniel Brame
Os segredos armazenados nos repositórios de Git têm sido um espinho do lado dos developers e uma fonte essencial para os atacantes durante muito tempo. Garantir que a informação sensível seja armazenada adequadamente e eliminada dos repositórios tornou-se uma necessidade para reduzir a probabilidade de o software ser comprometido, muitas vezes de forma muito pública. Embora pareça óbvio, é fácil ignorar as cadeias de ligação encriptadas, palavras-passe e até credenciais de texto simples armazenadas pela própria ferramenta de desenvolvimento. O Visual Studio, por exemplo, pode armazenar credenciais de ligação SQL em texto simples, a menos que seja reportado em contrário.
Só em 2020, GitGuardian detetou mais de 2 milhões de segredos em repositórios públicos. A hipótese, neste caso, era que uma credencial vazada produzida por um estagiário desempenhava um papel na execução do ataque SolarWinds. Com casos proeminentes como este, vale a pena levar um minuto para avaliar se os seus próprios projetos podem ser expostos desta forma.
O truque é encontrar os segredos para começar. Geralmente são escondidos em código obscuro e codificado ou ficheiros XML de formas difíceis de encontrar. A limpeza manual de códigos está sujeita a erro e é provável que resulte em descuido. Infelizmente, uma vez que Git, tal como outros sistemas de controlo de origem, mantém compromissos anteriores, limpar um segredo exposto vai além de simplesmente apagar o código secreto e recomprometer-se. Tem de ser eliminado da história, o que às vezes pode significar um novo começo. Por isso, é importante acertar no início do processo.
Felizmente, estão disponíveis várias ferramentas para ajudar a lidar com este tipo de problemas. Embora a maioria seja linha de comando, algumas são opções baseadas na web. Todos partilham funcionalidades similares, mas conseguem o resultado de formas ligeiramente diferentes. As principais informações que procura incluem nomes de utilizador, palavras-passe, chaves privadas e outras informações potencialmente sensíveis.
Ao considerar qual usar, é importante avaliar as suas próprias competências técnicas, tempo disponível para aprender uma nova ferramenta, se precisa de deteções personalizadas e orçamentação.
O GitLeaks pode ser instalado através do Homebrew, Docker ou Go, que está disponível em várias plataformas. Uma vez instalado, poderá definir regras e executar a ferramenta de linha de comando para digitalizar o seu repositório Git. As regras são escritas usando a linguagem TOML (Tom's Obvious Minimal Language) que parece um cruzamento entre os ficheiros JSON e Windows INI. Cada regra é uma expressão regular, por isso é útil ser fluente nelas.
Felizmente, uma vez aprendido, não há limite para os tipos de padrões com os quais se pode comparar. O GitLeaks também fornece alguns exemplos de definições que pode usar se precisar de atualizar o seu conhecimento de expressões regulares ou precisar de um bom ponto de partida para construir o seu próprio. Além disso, uma definição padrão irá capturar a maioria dos segredos comuns que você não quer que os vigaristas ou empregados desonestos encontrem.
Depois de executar a ferramenta, receberá uma lista de problemas e um código de devolução se quiser automatizar os seus cheques. O GitLeaks é uma ferramenta poderosa que requer que saibas o que estás a fazer, mas é leve o suficiente para caber no oleoduto de desenvolvimento de qualquer um.
GittyLeaks tem um nome semelhante ao GitLeaks, mas é uma ferramenta muito diferente. Está escrito em Python e é uma espécie de "pónei de um truque só". Depois de instalá-lo com pip, pode executá-lo a partir da pasta de onde o seu repositório de git foi clonado. Tentará procurar palavras como nome de utilizador, palavra-passe e e-mail que possam ter sido esquecidas. Ainda é um trabalho em andamento e carece de um mecanismo sólido para personalizar padrões de pesquisa, bem como lidar com a correção, mas faz o trabalho de encontrar segredos e não requer aprendizagem de sintaxe de regra especial como o GitLeaks.
A única parte complicada de qualquer ferramenta Python é certificar-se de que está a executar a versão certa de Python e a versão certa do pip. Desde que preste muita atenção a ambos, não há problemas ao executar a ferramenta e obter bons resultados.
A SpectralOps da Spectral é uma solução paga. Embora a Spectral não forneça preços publicamente, pode inscrever-se para uma demonstração no seu site e perguntar sobre isso. Os benefícios das SpectralOps são muitos. Integra-se com várias fontes de dados para além de Git. Pode interagir com GitHub, GitLab, NPM, Google Cloud Build e muito mais. Tal como as opções gratuitas, é uma ferramenta de linha de comando que verifica o seu código antes de ir para a cloud.
O que distingue os SpectralOps é que pode facilmente integrar-se com múltiplos sistemas de integração contínua (CI), que são ferramentas que criam e testam alterações automáticas de código. A SpectralOps utiliza ficheiros YAML especialmente concebidos, chamados detetores, para detetar segredos definidos no seu código. Enquanto a Espectral está constantemente a expandir esta biblioteca, é livre de escrever a sua.
A SpectralOps está claramente orientada para uma equipa de desenvolvimento maior, com um orçamento e muito apoio por trás. Se precisa de um passo acima das ferramentas gratuitas e tem preocupações de privacidade, vale a pena dar uma olhada nas SpectralOps.
GitGuardian é uma solução totalmente baseada na web que verifica continuamente os seus repositórios por segredos. É quase totalmente automatizado e funciona como um produto de proteção de ponto final para o seu código. Liga-se diretamente ao GitHub, Bitbucket, GitLab ou aos seus repositórios internos e monitoriza-os continuamente para obter segredos. Todos os segredos descobertos podem ser tratados, rastreados e corrigidos a partir da aplicação.
Embora ainda precise de fazer edições manuais no seu Repositório Git, o GitGuardian garante que segue todas as medidas necessárias para garantir a remoção adequada do segredo. O GitGuardian é gratuito para repositórios privados e pequenas equipas de até 25 developers. Qualquer coisa acima disso começa a 434 dólares e aumenta a partir daí.
A única parte em que algumas pessoas podem ter problemas é o facto de precisar de se ligar diretamente ao seu repositório. Se tiver certas políticas de privacidade ou outras preocupações que possam proibir isso, pode fazer mais sentido procurar uma ferramenta offline. Dito isto, se não gosta de se preocupar com uma linha de comando e prefere uma abordagem visual, GitGuardian é o caminho a seguir.
Não importa o seu orçamento ou nível de habilidade técnica, existe uma ferramenta disponível para ajudá-lo a garantir que segredos críticos da missão não vazem para o mundo através do seu sistema de controlo de fontes. Ao dedicar algum tempo e adotar uma destas aplicações no seu processo de desenvolvimento, pode dar um grande passo para que a sua organização e base de utilizadores se sintam menos em risco, evitando a notoriedade das manchetes na primeira página.