Criar instruções VEX

Este documento descreve como criar instruções Vulnerability Exploitability eXchange (VEX).

Para cada imagem do contêiner enviada ao Artifact Registry, o Artifact Analysis pode armazenar uma instrução VEX associada. O VEX é um tipo de aviso de segurança que indica se um produto foi afetado por uma vulnerabilidade conhecida.

Cada declaração fornece:

  • O editor da declaração VEX
  • O artefato para o qual a instrução é gravada
  • A avaliação de vulnerabilidade (status VEX) de todas as vulnerabilidades conhecidas

Os editores de software podem criar declarações VEX para descrever a postura de segurança de um aplicativo. As declarações VEX registram todas as vulnerabilidades descobertas em artefatos específicos e fornecem contexto sobre o impacto delas nos clientes ou órgãos reguladores.

Os responsáveis pela segurança e pelas políticas podem usar o status VEX para triagem de riscos nas cadeias de suprimentos de software e usar as declarações VEX para atestar a composição dos artefatos, ajudando as organizações a atender aos requisitos regulatórios.

Status VEX

O status VEX indica se um artefato foi afetado por uma vulnerabilidade conhecida.

O status pode ser um destes:

  • Não afetada: essa vulnerabilidade não precisa de correção.
  • Afetado: é recomendado realizar ações de correção.
  • Corrigida: nesta versão do produto, uma correção foi aplicada para corrigir a vulnerabilidade.
  • Sob investigação: o status deste produto ainda não foi determinado. O editor vai fornecer um status atualizado em uma versão posterior.

Antes de começar

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Container Analysis, Artifact Registry APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Container Analysis, Artifact Registry APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. Armazene imagens de contêiner em um repositório do Artifact Registry ou crie um repositório e envie suas imagens.

Funções exigidas

Para ter as permissões necessárias para fazer upload de avaliações do VEX e verificar o status das vulnerabilidades do VEX, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Criar instruções VEX

Artifact Analysis oferece suporte ao padrão Common Security Advisory Format (CSAF) 2.0 em JSON. Para produzir uma nova instrução VEX, use o esquema CSAF.

Confira abaixo um exemplo de uma instrução VEX para uma imagem no Artifact Registry com uma ramificação cve para uma vulnerabilidade conhecida.

É necessário definir o valor do product_status para cada CVE.


{
  "document": {
    "csaf_version": "2.0",
    "lang": "en-US",
    "publisher": {
      "name": "Sample-Company",
      "namespace": "https://sample-company.com"
    },
    "title": "Vex document 1.1"
  },
  "product_tree": {
    "branches": [
      {
        "name": "https://LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME",
        "product": {
          "name": "PRODUCT_NAME",
          "product_id": "IMAGE_NAME"
        }
      }
    ]
  },
  "vulnerabilities": [
    {
      "cve": "CVE_ID",
      "product_status": {
        "PRODUCT_STATUS": [
          "IMAGE_NAME"
        ]
      }
    }
  ]
}

Onde

  • PRODUCT_NAME Nome do produto legível por humanos para a imagem. Recebe um valor de string. O valor precisa ser o nome canônico completo do produto, incluindo o número da versão e outros atributos.
  • LOCATION é a região ou o local multirregional do seu repositório.
  • PROJECT_ID é o ID do projeto que contém o repositório.
  • REPO_NAME é o nome do repositório do Docker no Artifact Registry.
  • IMAGE_NAME é o nome da imagem;
  • CVE_ID é o identificador da vulnerabilidade, como CVE-2017-11164.
  • PRODUCT_STATUS é a avaliação do risco de segurança. A Artifact Analysis oferece suporte a quatro tipos de status: known_affected, known_not_affected, under_investigation e fixed.

Para cada vulnerabilidade que você quer listar na instrução VEX, é necessário criar uma ramificação cve e definir o valor do product_status.

O valor do campo name em product_tree.branches.name é o URI da imagem. A inclusão desse valor associa a instrução VEX a uma imagem Docker específica.

A seguir