SCA Agent-Based Deep Dive

igd753

Ivo Dias

Posted on June 20, 2023

SCA Agent-Based Deep Dive

Requisitos de implementação
Liberação dos endereços:

Ter um usuário com a role de Submitter.
Usar um sistema operacional e/ou imagem com suporte a comandos Unix ou Windows.
Para administrar os Workspaces, ter a role Workspace Administrator ou Workspace Editor.

Como criar um Workspace
Na tela inicial do portal da Veracode, vamos na seção "Scans & Analysis" e selecionamos "Software Composition Analysis":

Nessa nova tela, selecionamos a aba "Agent-Based Scan", clicamos no botão "Actions" e selecionamos "Create Workspace":
Image description

Informamos um nome para esse ambiente e caso seja necessário vincular ele a um time, após digitar o nome clicamos em "More Options" e informamos o time, caso não seja necessário apenas clicamos em "Create".

A tela de configuração do agente vai ser aberta, nela podemos seguir guias específicos sobre como gerar e configurar o agente em varias ferramentas e sistemas. Como nosso objetivo é apenas pegar a credencial para utilizar a solução, podemos clicar em qualquer um, mas recomendo para agilizar que clique em "Jenkins / Hudson" e depois em "Create Agent & Generate Token":

Conforme as orientações que vemos na tela, para autenticar com esse valor vamos precisar adiciona-lo a uma variável chamada SRCCLR_API_TOKEN independente de qual seja a ferramenta que vai implementar.

Como implementar o SCA numa esteira?
Para exemplificar, vamos usar o Github Actions para fazer o uso do SCA Agent-Based para encontrar eventuais falhas nos componentes de terceiros, usando uma imagem Linux.

Dentro da seção de Secrets do GitHub Action, vamos criar um valor com o nome SCA, onde vamos armazenar o valor da credencial que obtemos conforme a seção anterior.

Nossa etapa pode ser executada simultaneamente ao processo de build ou de forma sequencial, recomendo quando possível paralelizar, já que isso vai ajudar no tempo total de execução do pipeline. Para implementar, precisamos apenas criar um job com o seguinte código:

Veracode_SCA:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Veracode SCA
        env:
          SRCCLR_API_TOKEN: ${{ secrets.SCA }} # Lembrar de criar as credenciais no Secrets
        run: |
          curl -sSL 'https://download.sourceclear.com/ci.sh' | bash -s – scan --update-advisor
Enter fullscreen mode Exit fullscreen mode

Existem vários parâmetros que pode utilizar dentro do SCA, para mais detalhes recomendo que leia a documentação. Mas dentro de nosso exemplo, estamos utilizando a opção para fazer o scan na pasta onde ele for executado (é preciso que seja a mesma onde fica o arquivo de dependências do projeto, conforme a linguagem) e o recurso de Update Advisor, que verifica quais as versões que não vão quebrar o seu projeto caso atualizadas.

Entendendo os resultados
Uma das vantagens de implementa-lo é conseguir no proprio LOG de execução verificar os eventuais problemas encontrados, organizados em seções.

Nosso LOG inicia com uma visão geral dos resultados, onde temos os números do que foi encontrado:
Inicio do LOG

Na seção de "Public Data" temos as falhas que já tem um registro publico, também conhecido como CVE, organizadas por severidade catalogada:
Public Data

Em "Premium Data" temos as falhas que a Veracode encontrou por meio de suas próprias pesquisas e que ainda não receberam um CVE.
É possível consultar essa base por meio desse link.
Premium Data

Na seção de licenciamento, vemos os números das quantidades nos níveis de potenciais riscos:
Seção de licenciamento

Em "Issues" temos todos os problemas listas e organizados por ID, tipo de falha, severidade, descrição e o ponto de falha (representando pelo nome do componente e sua versão):
Issues

Por fim, temos a seção do Update Advisor com as recomendações de atualização de alguns componentes (quando identificadas melhores versões para o seu projeto dentro de algumas que poderiam causar alguma quebra) e um link para consultar os resultados na plataforma:
Update Advisor

Dentro da plataforma podemos ver as informações de forma mais visual:
Plataforma

Ao clicar em uma vulnerabilidade, temos os detalhes sobre ela e como corrigir:
Detalhe das falhas

E caso não seja uma dependência direta, temos acesso ao mapa de dependências:
Mapa de dependencias

Como configurar regras para quebra de fluxo?
Para fazer o gerenciamento das opções, no portal da Veracode acesse a aba de "Scans & Analysis" e clique em "Software Composition Analysis", selecionando a aba "Agent-Based Scan".

Nessa tela vamos ver a listagem de todos os Workspaces que criamos, bastando selecionar qual queremos personalizar as regras.
Agent
Com o Workspace selecionado, vamos clicar em "Rules" no canto inferior direito. Nessa nova tela, selecionamos a aba "Custom Rules" e clicamos em "Edit":
Rules
Agora cada uma das opções permite edição.
Caso queira que para algum desses controles o pipeline quebre, altere em "Level" de "Warning" para "Error". Caso precise de algum controle diferente dos padrões, selecione "Add Control".

Depois de personalizar basta clicar em "Save" no mesmo local onde estava o botão "Edit".

As modificações vão começar a funcionar no próximo scan.

💖 💪 🙅 🚩
igd753
Ivo Dias

Posted on June 20, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

SCA Agent-Based Deep Dive
veracode SCA Agent-Based Deep Dive

June 20, 2023