Cartoon rock climber using proper security techniques while climbing a rock wall

Amplie seus testes com ferramentas de terceiros com verificação de código GitHub

Nicholas Liffen
Nicholas Liffen // Director, GitHub Advanced Security // GitHub

O GitHub entende que cada fluxo de trabalho é único. Para apoiá-lo, oferecemos uma plataforma extensível com um amplo ecossistema de mais de 17.000 integrações de aplicativos e modelos predefinidos do GitHub Actions em todo o ciclo de vida de desenvolvimento de software. Isso inclui mais de 70 ações para ferramentas de segurança de aplicações de segurança de negócios e de código aberto em categorias como análise dinâmica, conformidade e verificação de contêiner que você pode usar para estender seus testes além das soluções nativas de Segurança Avançada GitHub. Por meio dessas integrações, você é notificado imediatamente em seu fluxo de trabalho quando há um problema de segurança e recebe insights para correção no mesmo formato em que os resultados do GitHub são entregues, permitindo evitar alterações de contexto que prejudicam a produtividade.

Neste guia, orientaremos você sobre a configuração de um exemplo de integração e a KPMG compartilhará alguns insights novamente.

Usamos muitas ferramentas diferentes de análise estática na KPMG, incluindo Checkov para configurações de infraestrutura da nuvem, Trivy para contêineres e ESLint para qualidade de código. Seria muito mais fácil adicionar várias ferramentas ao seu pipeline, mas nunca conferir os resultados. Contudo, ao juntar tudo em um só lugar, podemos aproveitar melhor todas as ferramentas diferentes que usamos por causa da varredura de código. Isso ajuda a garantir que nada escape pelas brechas. Esse é um recurso muito subestimado do GHAS.

Phil Wright-Christie
Phil Wright-Christie // Lead DevOps Engineer // KPMG

Vamos ver como é possível usar o GitHub Actions para executar automaticamente ferramentas de segurança da aplicação de terceiros, fazer upload dos resultados e visualizá-los com a varredura de código.


Neste guia, você aprenderá:

  • Por que ferramentas de terceiros são uma adição valiosa à varredura de código do GitHub

  • Como integrar ferramentas de terceiros na varredura de código com o GitHub Actions

  • Como visualizar resultados de ferramentas de varredura de código de terceiros na varredura de código


1. Configurar a verificação de contêineres. 

Vamos começar com o Trivy, um recurso de segurança abrangente que permite às organizações verificar contêineres. Toda a lógica desta seção pode ser aplicada a outros tipos de ferramentas de segurança e qualidade de aplicações. 

Solte o seguinte arquivo no diretório .github/workflows . É possível nomear este arquivo como desejar, mas recomendamos algo apropriado como trivy.yml

name: "trivy"
on:
    workflow_dispatch:
    push:
    pull_request:

jobs:
    trivy:
        runs-on: ubuntu-latest
        steps:
            -   uses: actions/checkout@v3
            
            -   name: Set up JDK 17
                uses: actions/setup-java@v3
                with:
                    distribution: 'temurin'
                    java-version: 17
                    architecture: x64
                    
            -   name: Cache Maven packages
                uses: actions/cache@v3.3.1
                with:
                    path: ~/.m2
                    key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
                    restore-keys: ${{ runner.os }}-m2-
                    
            -   name: Build with Maven
                run: mvn --no-transfer-progress verify
                
            -   name: "Set up QEMU"
                if: runner.os == 'Linux'
                uses: docker/setup-qemu-action@v2.2.0
                
            -   name: "Set up Docker Buildx"
                if: runner.os == 'Linux'
                uses: docker/setup-buildx-action@v2
                
            -   name: "Verify Docker WebGoat build"
                if: runner.os == 'Linux'
                uses: docker/build-push-action@v4.1.1
                with:
                    tags: localbuild/testimage:latest
                    push: false
                    load: true
                    context: ./
                    file: ./Dockerfile
                    build-args: |
                        webgoat_version=${{ env.WEBGOAT_MAVEN_VERSION }}
            - name: Run Trivy vulnerability scanner
              uses: aquasecurity/trivy-action@master
              with:
                image-ref: 'localbuild/testimage:latest'
                format: 'sarif'
                output: 'trivy-results.sarif'
                timeout: 20m0s
      
            - name: Upload Trivy scan results to GitHub Security tab
              uses: github/codeql-action/upload-sarif@v2
              if: always()
              with:
                sarif_file: 'trivy-results.sarif'

Esse fluxo de trabalho faz isso:

  • Cria o projeto Maven com uma instalação do Maven

  • Configura o Docker e executa a compilação do Docker localmente no fluxo de trabalho de ação

  • Executa a verificação do contêiner Trivy

  • Carrega os resultados para a varredura de código do GitHub. 

Depois de enviar o arquivo acima para o diretório .github/workflows, selecione a guia Actions. O trabalho Trivy deve estar em execução.

2**. Veja os resultados de SARIF.**

Selecione a guia Security no repositório do Web Goat.

Selecione Code scanning na barra lateral. 

Clique no filtro da ferramenta e escolha Trivy.

Screenshot of Trivy code scanning results

Você deverá ver alguns resultados do Trivy.

A seguir: Personalização do escopo da verificação de segredo

Trivy é apenas uma das muitas ferramentas de segurança da aplicação que você pode usar com a varredura de código. Não deixe de conferir o GitHub Marketplace para encontrar ações que ajudem a fazer upload automático de arquivos SARIF de todas as ferramentas que você usa e confira nosso roteiro de aprendizagem de automação para saber mais sobre o GitHub Actions. 

Mas primeiro, vamos passar para a verificação de segredo e como podemos ajustar o escopo de nossas verificações.