Projeto utilizando Cloud Functions
Olá, pessoal
Tudo bem?
Faz tempo que eu não escrevia um assunto aqui. Hoje, resolvi trazer um pouco da minha experiência usando cloud function do Google Cloud Platform. Isso ocorreu por eu estar realizando uma pós em ciência de dados. Aqui, também aproveito para explicar o motivo da pós: quando se trabalha na área de AppSec, recebemos muitos dados de ferramentas e muitos falso positivos.
Assim, esses dados de vulnerabilidades, eu queria classificar de acordo com as ferramentas e acompanhar durante o tempo em diferentes squads. Como também, como objetivo pessoal, ajudar a desenvolver uma ferramenta com menos falso positivos, pois assim, ajudaria tanto os desenvolvedores quanto analistas de segurança a serem mais assertivos nas correções e nas estratégias com as equipes
Um outro ponto importante a ser mencionado, é muito importante quem trabalha com AppSec se aprofundar na área de cloud. Isso vai desde configurações para subir aplicações na nuvem, quanto ajudar os desenvolvedores com regras e permissões nesse meio. Por conta desse outro fator, acabei optando de fazer esse experiemento usando o GCP 😊
Deixarei aqui o GitHub com o projeto, caso queiram ver os códigos utilizados:
Usei toda a estrutura do Google Cloud Platform (GCP)
Os dados são extraídos de algumas ferramentas de segurança, pois o objetivo é entender qual a quantidade e os tipos de vulnerabilidades que são encontradas nas ferramentas de segurança
. Assim, foram utilizadas as ferramentas:
- SCA (WhiteSource)
- SAST (Bandit e Snyk)
- DAST (OWASP ZAP) Essas ferramentas foram coletas através dos repositórios do Github, Snyk e Gitlab conforme arquivos
project_id_gitlab
,repository
eproject_id_snyk
Cloud Functions
Utilizei as Cloud functions por serem Funções Como Serviço. Assim, o modelo de pagamento é baseado no total de invocações. Com um ambiente de execução serverless e código executado num ambiente gerenciado, onde funções de propósito único são escritas e ativadas por eventos pré definidos emitidos por outros serviços da GCP.
Foram desenvolvidas duas cloud functions.
- A primeira para realizar toda a parte de extração das ferramentas de segurança para armazenar em arquivo json final. Antes disso, todos os arquivos gerados são enviados em formato csv para um bucket temporário. Após isso, são concatenados e é gerado um json com arquivo final desses dados. Para a geraçao desse trigger, pode ser feito através de um request, onde será possível ter esse output:
- A segunda function foi usada com um trigger, onde se o arquivo json fosse enviado para o bucket, será adicionada no Cloud Storage.
Functions
Extração de dados de segurança
Bucket temporário
- O bucket serve como um ambiente para armazenar arquivos como imagens, documentos e nesse caso, utilizei para armazenar CSV. Esse é um ponto muito comum de vulnerabilidade em serviços, pois geralmente é aonde se configura de forma indevida, podendo fazer uploads de arquivos html ou mesmo acessar esses arquivos do bucket diretamente
Upload do json
Carregamento do arquivo json
Envio do json para Cloud Storage
Cloud Storage
Foi possível observar o upload e os dados armezados no banco de dados do GCP. Para isso, utilizei o arquivo json como modelo para as colunas que são usadas no Cloud Storage.
Nessa imagem, podemos ver o banco, com todas as vulnerabilidades que vieram das ferramentas, armazenados
Análise de dados usando Jupyter-lab
No próprio GCP, foi possível criar uma instância com jupyterlab. Assim, não precisamos adicionar token para se autenticar, pois toda a instância do projeto está compartilhada, desde o jupyterlab até o acesso ao bucket e o banco de dados
Assim, podemos concluir que a ferramenta SAST obtém mais vulnerabilidades e os principais tipos de vulnerabilidade:
Espero que tenham gostado! 👩💻💜