Projeto utilizando Cloud Functions

Michelle Mesquita
4 min readDec 25, 2023

--

Photo by engin akyurt on Unsplash

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 😊

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 e project_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! 👩‍💻💜

--

--

Michelle Mesquita
Michelle Mesquita

Written by Michelle Mesquita

DevSecOps & AppSec Engineer & Developer girl 👩‍💻

No responses yet