Investigue vulnerabilidades

Quando ouve falar de uma nova vulnerabilidade, é importante agir rapidamente. Esta página fornece uma lista de chamadas API e filtros essenciais que são pré-criados para si. Use estas chamadas API para obter resultados de análises do Artifact Analysis e recolher informações sobre o estado dos seus artefactos.

Este conteúdo foi concebido para utilização com metadados de análise automática. Se as suas imagens tiverem excedido o período de 30 dias de análise contínua, pode executar uma nova análise enviando novamente para o Artifact Registry.

Todos os exemplos nesta página acedem diretamente à API, mas também pode usar as bibliotecas cliente da Container Analysis ou os comandos gcloud.

Autorizações necessárias

Todos estes exemplos usam o método da API ListOccurrences. Para chamar este método, precisa da função Container Analysis Occurrences Viewer (roles/containeranalysis.occurrences.viewer) para o projeto que está a analisar.

  • Se estiver a analisar projetos que lhe pertencem, já tem as autorizações necessárias.

  • Se estiver a analisar projetos que não lhe pertencem, use as instruções de gestão de acesso do IAM para conceder autorizações.

Para mais informações sobre os tipos de acesso para fornecedores e clientes que usam a análise de artefactos, consulte as autorizações.

Veja todos os metadados de vulnerabilidade de uma imagem

Use o filtro kind=VULNERABILITY com o ID do projeto e o URL completo do recurso da imagem, incluindo https://:

  curl -G -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    --data-urlencode "filter=(kind=\"VULNERABILITY\" AND resourceUrl=\"RESOURCE_URL\")" \
    https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences

Onde:

  • PROJECT_ID é o ID do seu Google Cloud projeto.
  • RESOURCE_URL é o URL completo da imagem no formato: https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH. O https:// tem de ser incluído no início do URL. Se precisar de encontrar o URL de uma imagem, pode usar a chamada em Ver todos os metadados de um projeto.

O resultado inclui uma lista de vulnerabilidades com detalhes como a gravidade, as opções de mitigação, se disponíveis, e o nome do pacote que contém a vulnerabilidade.

Verifique se existe uma vulnerabilidade específica num projeto

Na maioria dos casos, a análise de artefactos usa o ID CVE como o identificador de vulnerabilidade. No entanto, existem algumas vulnerabilidades listadas na base de dados de avisos do GitHub que não têm um ID CVE associado. Neste caso, a análise de artefactos usa o ID da GHSA.

O ID da vulnerabilidade está incluído como parte do campo noteName. Começa com o prefixo CVE para IDs CVE e GHSA para IDs GHSA. Considere o seguinte resultado de exemplo da execução do comando para ver todas as vulnerabilidades de uma imagem:

vulnerabilities:
  HIGH:
  - name: projects/my-project/occurrences/1234fh2c-699a-462f-b920-93a80f56f544
    resourceUri: https://my_region-docker.pkg.dev/my-project/my-repo/my-image@sha256:8a1a79b587797c5164ec95977cf7aaaa828694a615947bdaed6a327d5b6a17bb
    noteName: projects/goog-vulnz/notes/CVE-2021-32798
    kind: VULNERABILITY
    ...
  - name: projects/my-project/occurrences/OCCURRENCE_ID
    resourceUri: https://my_region-docker.pkg.dev/my-project/my-repo/my-image@sha256:8a1a79b587797c5164ec95977cf7aaaa828694a615947bdaed6a327d5b6a17bb
    noteName: projects/goog-vulnz/notes/GHSA-884p-74jh-xrg2
    kind: VULNERABILITY
    ...

Neste exemplo, a primeira vulnerabilidade tem o ID CVE-2021-32798 e a segunda vulnerabilidade tem o ID GHSA-884p-74jh-xrg2.

Depois de ter o ID da vulnerabilidade, pode executar o seguinte comando para obter uma lista de imagens afetadas no seu projeto que tenham um ID de ocorrência de VULN_ID:

  curl -G -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    --data-urlencode "filter=(noteProjectId=\"goog-vulnz\" AND noteId=\"VULN_ID\")" \
    https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences

Onde:

  • PROJECT_ID é o ID do seu Google Cloud projeto.
  • VULN_ID é o ID da vulnerabilidade como um ID CVE ou um número de ID GHSA, como CVE-2021-32798 ou GHSA-884p-74jh-xrg2.

Pesquise vulnerabilidades em vários projetos

Use globbing do curl para fazer consultas em vários projetos.

Por exemplo, o seguinte fragmento define uma variável para conter dois IDs de projetos e, em seguida, envia uma chamada API para cada projeto para procurar ocorrências.

  PROJECT_IDS="PROJECT_ID_1,PROJECT_ID_2"

  curl -G -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://containeranalysis.googleapis.com/v1/projects/{$PROJECT_IDS}/occurrences"

Onde:

  • PROJECT_ID_1 é o Google Cloud ID do projeto do primeiro projeto que quer examinar.
  • PROJECT_ID_2 é o Google Cloud ID do projeto do segundo projeto que quer examinar.

Veja todos os metadados de um projeto

Pedir todas as ocorrências associadas ao ID do seu projeto:

  curl -X GET -H "Content-Type: application/json" -H \
    "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences

Onde:

  • PROJECT_ID é o ID do seu Google Cloud projeto.

A saída inclui informações sobre vulnerabilidades e outros tipos de metadados suportados associados ao seu projeto. Por exemplo, o seu projeto pode ter detalhes de compilação ou atestações.

Verifique se existe um pacote específico num projeto

A análise de artefactos cria dependências de pacotes para artefactos analisados. Para encontrar todos os artefactos que têm um pacote específico como dependência, pode filtrar pelo nome do pacote:

curl -G -H "Content-Type: application/json" \
   -H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(dependencyPackageName=\"PACKAGE_NAME\")" \
    https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences

Onde:

  • PROJECT_ID é o ID do seu Google Cloud projeto.
  • PACKAGE_NAME é o nome do pacote.

Veja todos os metadados do pacote de uma imagem

Para ver todos os diferentes tipos de metadados de pacotes de uma imagem, use o filtro kind=PACKAGE_NAME com o ID do projeto e o URL completo do recurso de imagem:

 curl -G -H "Content-Type: application/json" \
   -H "Authorization: Bearer $(gcloud auth print-access-token)" \
   --data-urlencode "filter=(kind=\"PACKAGE\" AND resourceUrl=\"RESOURCE_URL\")" \
   https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences

Onde:

  • PROJECT_ID é o ID do seu Google Cloud projeto.
  • RESOURCE_URL é o URL completo da imagem, no formato https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH. O https:// tem de ser incluído no início do URL. Se precisar de encontrar o URL de uma imagem, pode usar a chamada de Ver todos os metadados de um projeto.

A saída inclui uma lista de dependências com o nome, a versão e as informações de licença das dependências.

Consultar uma ocorrência específica para todos os detalhes disponíveis

Pode executar uma consulta para ver mais detalhes sobre uma ocorrência. Por exemplo, se estiver a usar o Pub/Sub para receber notificações sobre ocorrências de vulnerabilidades, o Pub/Sub envia detalhes básicos para ajudar a identificar a ocorrência que foi alterada e quando a alteração ocorreu.

A carga útil inclui um ID de ocorrência. Pode usar o ID de ocorrência para consultar detalhes que ajudam a fazer a triagem de problemas e a tomar medidas.

  curl -X GET -H "Content-Type: application/json" -H \
    "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences/OCCURRENCE_ID

Onde:

  • PROJECT_ID é o ID do seu Google Cloud projeto.
  • OCCURRENCE_ID pode ser qualquer uma das seguintes opções, dependendo do resultado do comando de Ver todos os metadados de um projeto:

    • Um valor numérico de uma lista de ocorrências.
    • O valor numérico no final do URL de uma mensagem do Pub/Sub.

A saída inclui informações como o tipo de pacote, a gravidade da vulnerabilidade, a pontuação CVSS e informações sobre correções, se disponíveis.

O que se segue?