Veracode é uma plataforma de segurança de aplicações. Ela reúne diferentes tipos de análise para encontrar falhas no código próprio, em dependências, aplicações em execução, containers e configurações de infraestrutura.
Diferente de uma ferramenta totalmente local, boa parte do processamento e da gestão acontece na plataforma da Veracode. Para acompanhar este artigo é necessário ter uma conta e acesso aos produtos liberados pela organização.
Aqui quero registrar o caminho mais curto para instalar a CLI no Ubuntu, autenticar e entender onde cada tipo de scan entra no desenvolvimento.
O que a Veracode analisa?
A plataforma cobre áreas diferentes da segurança de aplicações.
SAST
Static Application Security Testing analisa o código e os artefatos compilados sem executar a aplicação. Ele procura padrões que podem levar a problemas como injeção, controle de acesso incorreto, criptografia insegura e exposição de informações.
O resultado normalmente aponta a categoria CWE, severidade, fluxo da falha e orientações de correção.
SCA
Software Composition Analysis identifica bibliotecas de terceiros, versões vulneráveis, licenças e riscos da cadeia de dependências.
SAST olha principalmente para o código que escrevemos. SCA olha para o código que trouxemos para dentro do projeto.
DAST
Dynamic Application Security Testing testa uma aplicação ou API em execução. A análise envia requisições ao alvo e observa seu comportamento externamente, sem depender do acesso ao código-fonte.
É útil para encontrar problemas visíveis em runtime, mas exige um ambiente disponível e autorização clara sobre o alvo.
Pipeline Scan
O Pipeline Scan aproxima a análise estática do fluxo de desenvolvimento. Ele pode rodar em uma estação local ou no CI, comparar novos resultados com um baseline e reprovar a execução conforme severidade, CWE ou política.
Cada Pipeline Scan possui limite de duração, e o artefato precisa respeitar os requisitos de empacotamento da linguagem.
Containers, IaC e secrets
A CLI também consegue analisar imagens, diretórios e repositórios em busca de vulnerabilidades conhecidas, segredos e problemas de configuração. A disponibilidade do resultado depende dos produtos contratados na conta.
Recursos principais
Os recursos que mais fazem diferença no fluxo são:
- políticas de segurança associadas à aplicação;
- classificação de falhas por severidade e CWE;
- orientação de correção e triagem;
- comparação com baseline para focar em novos problemas;
- integração com IDE, repositório e CI/CD;
- relatórios centralizados por aplicação e equipe;
- Software Bill of Materials, ou SBOM;
- Veracode Fix para sugerir correções em linguagens suportadas.
Uma vantagem de centralizar as análises é conseguir acompanhar risco e conformidade em vários projetos. O custo dessa centralização é depender de credenciais, licenças e do formato de empacotamento esperado pela plataforma.
Antes de instalar
No Ubuntu, precisamos de curl e de uma máquina Linux Intel compatível com a CLI:
sudo apt update
sudo apt install -y curl ca-certificatesTambém precisamos de uma conta Veracode. Para automação, a conta deve permitir a criação de credenciais de API. Para uso interativo com SSO, a CLI oferece autenticação OAuth.
Instalando a Veracode CLI
O instalador oficial para Linux pode ser executado assim:
curl -fsS https://tools.veracode.com/veracode-cli/install | shO script informa onde salvou o binário. Entre nessa pasta ou coloque-a no PATH, de acordo com a mensagem exibida.
Se o binário estiver na pasta atual:
./veracode version
./veracode helpSe ele já estiver no PATH:
veracode version
veracode helpNos exemplos seguintes usarei veracode. Acrescente ./ se a instalação deixou o executável no diretório atual.
Autenticando com SSO
Para uma sessão interativa em uma organização que usa Single Sign-On:
veracode auth loginA CLI inicia o fluxo de login com usuário ou e-mail. Esse formato é conveniente na máquina do desenvolvedor, mas não serve para uma pipeline sem interação.
Autenticando com credenciais de API
Na plataforma Veracode, gere o API ID e a secret key do usuário. A chave secreta deve ser copiada no momento da criação e tratada como senha.
Para uso local:
veracode configureA CLI pedirá o API ID e a chave e armazenará a configuração localmente.
Em CI/CD, use secrets da plataforma para preencher variáveis de ambiente:
export VERACODE_API_KEY_ID="seu-api-id"
export VERACODE_API_KEY_SECRET="sua-chave-secreta"Não salve essas linhas no repositório, em imagens Docker ou em arquivos de exemplo com valores reais.
Testando a instalação
A documentação sugere uma análise simples da imagem Alpine:
veracode scan --source alpine:latest --type imageEsse comando confirma instalação, autenticação e acesso ao produto de Container Security. Na primeira execução, a CLI pode baixar bases de vulnerabilidade e levar um pouco mais de tempo.
Se a conta não possuir essa licença, a falha de autorização não significa que a CLI foi instalada incorretamente. Nesse caso, teste um produto habilitado para sua organização.
Analisando um diretório ou repositório
Para analisar o diretório atual com os recursos do comando scan:
veracode scan --source . --type directoryUm repositório remoto também pode ser usado como origem:
veracode scan \
--source https://github.com/veracode/veracode-sca \
--type repoRepositórios privados exigem autenticação no provedor. A CLI aceita variáveis como GITHUB_TOKEN e GITLAB_TOKEN, mas esses tokens também devem ficar no cofre de secrets do CI.
Preparando uma análise estática
SAST não é simplesmente apontar a ferramenta para qualquer pasta. A Veracode espera um pacote compatível com a linguagem e, em muitos casos, com arquivos compilados.
A CLI possui um empacotador automático:
mkdir -p veracode-artifacts
veracode package \
--source . \
--output ./veracode-artifactsRevise as mensagens e os arquivos gerados. O projeto precisa compilar e ter suas dependências disponíveis para produzir um artefato completo.
O comando abaixo ajuda a diagnosticar projetos Maven, Gradle e .NET antes do empacotamento:
veracode package discover . --dry-run --format yamlEle identifica toolchains e módulos, mas não substitui a documentação de empacotamento de cada linguagem.
Executando um Pipeline Scan
Depois de localizar o artefato gerado, envie-o para a análise estática:
veracode static scan \
./veracode-artifacts/meu-artefato.zip \
--results-file results.json \
--summary-output results.txtO nome e a extensão do artefato variam conforme a linguagem. Java costuma enviar JAR, WAR ou EAR; outras stacks usam pacotes definidos pela documentação da Veracode.
Para fazer a pipeline falhar somente com severidades mais altas:
veracode static scan \
./veracode-artifacts/meu-artefato.zip \
--fail-on-severity "Very High, High" \
--results-file results.jsonO exit code 3 indica que a análise terminou, mas o resultado não passou pelos critérios configurados. É diferente de uma falha técnica da CLI.
Usando um baseline
Um baseline permite registrar falhas já conhecidas e destacar o que apareceu depois:
veracode static scan \
./veracode-artifacts/meu-artefato.zip \
--results-file baseline.jsonNas análises seguintes:
veracode static scan \
./veracode-artifacts/meu-artefato.zip \
--baseline-file baseline.json \
--results-file results.jsonO baseline deve ser versionado e revisado. Alterá-lo sem controle pode esconder vulnerabilidades da mesma forma que desativar uma regra.
Como encaixo no fluxo
Uma sequência razoável para CI é:
instalar dependências
executar testes
compilar a aplicação
empacotar para a Veracode
executar o Pipeline Scan
publicar results.json e results.txt como artefatosComeço com a análise informativa para entender o volume e a qualidade dos achados. Depois aplico política de bloqueio em código novo ou nas severidades mais altas.
Bloquear tudo no primeiro dia costuma gerar ruído e resistência. Nunca bloquear nada transforma segurança em um relatório que ninguém lê.
Veracode não substitui SonarQube ou Trivy
Existe sobreposição, mas o foco não é idêntico:
- SonarQube acompanha qualidade, confiabilidade, manutenção e parte da segurança do código;
- Veracode oferece uma plataforma ampla de AppSec com SAST, SCA, DAST e políticas corporativas;
- Trivy é uma ferramenta direta para vulnerabilidades, containers, IaC, secrets e SBOM.
Em uma organização, elas podem atuar juntas. A escolha depende do risco, licenciamento, stack e maturidade do fluxo.
Fechamento
O primeiro desafio com a Veracode não é instalar a CLI; é entender qual análise está contratada e qual artefato a aplicação precisa produzir. Quando autenticação e empacotamento ficam previsíveis, levar o scan para a pipeline se torna uma etapa pequena.
Também vale começar com um projeto controlado. Isso permite ajustar política, baseline e critérios de falha antes de afetar todas as equipes. Segurança funciona melhor quando o resultado chega cedo e vem acompanhado de contexto para correção.