Criar instruções VEX

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

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

Cada instrução fornece:

  • O editor da declaração VEX
  • O artefato para o qual a declaração é escrita
  • A avaliação de vulnerabilidades (status VEX) para 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 observam 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 pela aplicação de políticas podem usar o status do VEX para classificar os riscos nas cadeias de suprimentos de software e usar declarações do VEX para atestar a composição dos artefatos e ajudar as organizações a atender aos requisitos regulamentares.

Status VEX

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

O status pode ser um dos seguintes:

  • Não afetado: essa vulnerabilidade não precisa de correção.
  • Afetado: é recomendado realizar ações de correção.
  • Corrigido: nesta versão do produto, a vulnerabilidade foi corrigida.
  • 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. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  7. To initialize the gcloud CLI, run the following command:

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

    Go to project selector

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

  10. Enable the Container Analysis, Artifact Registry APIs.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  13. To initialize the gcloud CLI, run the following command:

    gcloud init
  14. Ter imagens de contêiner armazenadas em um repositório do Artifact Registry ou criar um repositório e enviar suas imagens.
  15. Funções exigidas

    Para ter as permissões necessárias para fazer upload de avaliações do VEX e verificar o status de 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 é compatível com o padrão Common Security Advisory Format (CSAF) 2.0 em JSON. Para produzir uma nova declaração VEX, use o esquema CSAF.

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

    É necessário definir o valor de 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 para a imagem. Usa 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 seu 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. Artifact Analysis é compatível com quatro tipos de status: known_affected, known_not_affected, under_investigation e fixed.

    Para cada vulnerabilidade que você quiser listar na sua declaração VEX, crie uma ramificação cve e defina o valor de product_status.

    O valor do campo name em product_tree.branches.name é o URI da imagem. Incluir esse valor associa a declaração VEX a uma imagem do Docker específica.

    A seguir