X9: Como Resultados Digitais pode detectar dados confidenciais automaticamente dados em seus repositórios de código

(Vitoria Rio) (9 de outubro de 2020)

Conforme as empresas se tornam maiores, com uma quantidade cada vez maior de recursos, os desenvolvedores constantemente criam e integram novos pedaços de código como commits, solicitações de pull , etc. Com o aumento da popularidade das metodologias ágeis, uma solução mais rápida para análise de vulnerabilidade está se tornando uma obrigação. Assim que o código é enviado para o repositório, se esse commit contém informações confidenciais, ações devem ser tomadas para abordá-lo imediatamente, uma vez que pode eventualmente levar a vazamentos de dados.

No entanto, investigando centenas de commits e solicitações pull não é uma tarefa fácil, mesmo para uma equipe de engenheiros de segurança qualificados, é aí que o X9 entra. O X9 é uma ferramenta de código aberto criada para automatizar a detecção de informações confidenciais nos repositórios GitHub da organização. Ele pode analisar o código automaticamente e criar notificações por meio do Slack quase em tempo real.

Arquitetura

O Github nos permite ler vários eventos, como commits e solicitações de pull por meio do uso de Github Webhooks . Por exemplo, quando um desenvolvedor cria um PR, um evento é criado na plataforma Github, que então envia uma carga útil da mensagem para uma rota pré-configurada (neste caso, a interface X9) contendo informações detalhadas sobre aquele evento. Essa abordagem funciona melhor quando consideramos que o Github nos permite configurar webhooks para toda a organização, permitindo que o X9 analise todos os repositórios deste escopo.

Ao configurar os eventos para toda a organização, o X9 não apenas garante que todos os repositórios estão sendo analisados, mas também agiliza o processo de análise, dando aos engenheiros de segurança mais flexibilidade e controle sobre as ameaças de segurança potenciais da empresa.

Ao receber a carga útil do evento, o aplicativo clona o branch do repositório e executa várias seguranças testes. Cada evento é processado por um trabalhador independente que pode ser ampliado em caso de maior rendimento. Todas as vulnerabilidades verificadas são armazenadas em um banco de dados PostgreSQL e notificadas em um canal Slack. A interface do Slack permite criar diretamente um problema no Github ou sinalizar a vulnerabilidade como um falso-positivo.

Análise

O X9 usa assinaturas e padrões específicos para detectar dados sensíveis no código. Essas assinaturas são expressões regulares adaptadas para esse propósito específico, como r"[a-zA-Z0-9]*\@emailexample.com" que pode detectar e-mails pessoais ou o seguinte, que detecta chaves de acesso AWS dentro do conteúdo do arquivo (definido mais adiante):

O aplicativo também permite que o usuário configure personalizado expressões regulares, permitindo uma abordagem mais orientada para o domínio. Existem quatro tipos de contextos de assinatura para X9:

  • nome do arquivo : Pesquisa por nomes de arquivos completos
  • extensão : pesquisa extensões específicas (por exemplo: .pem, .db)
  • caminho : Pesquisa o caminho completo de uma pasta predeterminada de um arquivo no repositório
  • conteúdo : Pesquisa padrões dentro dos arquivos

Notificações e ações

Por meio dos Slack Webhooks , o X9 envia informações detalhadas de cada descoberta para um canal definido pelo usuário. É importante observar que qualquer informação possivelmente sensível é devidamente ofuscada, conforme visto abaixo:

Os componentes interativos ( Problema aberto e Falso positivo botões) permitem a criação direta de problemas no GitHub e desconsideram a vulnerabilidade como um falso positivo, respectivamente. Se um problema precisa ser criado a partir da mensagem, o seguinte formato de problema é criado no repositório vulnerável:

Painel

O X9 também tem um painel para visualização de vulnerabilidade. Este painel é um aplicativo separado opcional que não interfere na análise de segurança. Ele usa OpenID Connect para autenticação de login.

O painel é uma visualização de tabela que permite a filtragem por nome de repositório e tipo de vulnerabilidade. Se criado, o link do problema também será mostrado.

Reflexões finais

X9 ainda é um trabalho em andamento e está sendo atualizado ativamente, contribuições são bem-vindas :).

Confira em github.com/ResultadosDigitais/ x9 .

Referências

Este projeto foi inspirado por Shhgit e Gitleaks , que forneceu a maioria das assinaturas e estratégia analítica.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *