Olá pessoal, tudo bem? 😊
Hoje resolvi trazer esse tema, pois na área de AppSec/DevSecOps é muito importante conhecer outras ferramentas que possam ajudar na integração e checagens de segurança durante a fase de desenvolvimento de um software.
O que é Github Actions?
Ele serve para você automatizar de forma fácil todo o processo de desenvolvimento de software, utilizando o conceito CI/CD por meio do workflow (build, teste e deploy ) no seu repositório.
O mais interessante é que você pode criar uma action e compartilhar no Github Marketplace e assim, qualquer pessoa poderá usar a sua action!
Achei essa ideia sensacional, principalmente se você quiser criar um código, como no nosso caso, que será para encontrar vulnerabilidade no código. Assim, não precisaremos passar por todos steps como clonar o repositório do projeto, instalar dependências ou Docker para o projeto específico, para depois executá-lo!
Agora que entendemos para o que serve o Github Actions, precisamos criar a nossa Action. Para isso, termos que ter em mente que precisamos criar um arquivo chamado action.yml e que o mesmo precisa estar no diretório principal (root). Dessa forma, será entendido pelo Github que esse é o arquivo que dará origem a nossa action.
name: 'SAST validator'
author: 'michelleamesquita'
description: 'Using python to verify vulnerabilities into code'
inputs:
path:
required: true
default: "."
language:
required: false
runs:
using: 'docker'
image: 'Dockerfile'
args:
- -d=${{ inputs.path }}
- -l=${{ inputs.language }}
Nesse arquivo, é importante entendermos que possuem alguns parâmetros importantes que serão usados para a criação da minha action utilizando container (Docker).
inputs
: é utilizado para passar os parâmetros que serão passados no argumento argumento (docker run sast -d=. -l=python
) . Então, "path" recebe o valor de "python", no exemplo.
runs
: é a parte principal do actions. Ele serve para definir o tipo de runner, que no nosso caso é 'docker'. Assim precisamos passar parâmetros específicos do Docker. Por exemplo a imagem e os argumentos que serão os inputs setados previamente.
Caso queiram ver os demais exemplos, segue a documentação do Github também 😊
Para utilizarmos essa action em outros projetos, será necessário publicar no Marketplace. Para isso, colocarei os passos abaixo: (só não reparem no número da versão que criei, pois estava apenas testando na época 😅)
Link para minha Action no Marketplace: https://github.com/marketplace/actions/sast-validator
Link para o meu repositório no Github:
https://github.com/michelleamesquita/sast-validator
Para criar tags no versionamento, segue as linhas de código:
➜ git tag -a -m “My first action release” v40
➜ git push - follow-tags
Para adicionar a action no repositório, será necessário criar esse diretório: .github/workflows/
, onde será necessário passar um arquivo yaml, como no exemplo abaixo:
on:
push:
branches:
- main
jobs:
sast_job:
runs-on: ubuntu-latest
name: SAST Validator
steps:
- name: Checkout repository content
uses: actions/checkout@v2
- name: SAST validator
uses: michelleamesquita/sast-validator@v40
with:
options: -v $PWD/:/app
path: .
language: python
Nesse código acima, é importante entender que precisamos utilizar a actions/checkout@v2
para poder ler o arquivo do diretório corrente do projeto que usará o sast-validator
.
Utilizamos o parâmetro options
para compartilhar o volume entre o container e a máquina virtual linux (Ubuntu) que está sendo utilizada para rodar esse job.
Por fim, quando houver um push na branch Main, o código que analisa vulnerabilidades irá avaliar essa branch.
Assim, o código de validador de vulnerabilidades (SAST Validator), foi utilizado como prova de conceito para encontrar potenciais vulnerabilidades. No entanto, é importante salientar que é necessário o analista de segurança validar. Como também, podemos aumentar a quantidade de regras e também para linguagens específicas, onde utilizei o RegEx para realizar esses testes.
Espero que tenham gostado 💜👩💻
Top comments (0)