Esaminare le vulnerabilità

Quando viene segnalata una nuova vulnerabilità, è importante intervenire rapidamente. Questa pagina fornisce un elenco di chiamate API e filtri essenziali precostituiti per te. Utilizza queste chiamate API per recuperare i risultati della scansione da Artifact Analysis e raccogliere informazioni sullo stato degli elementi.

Questi contenuti sono progettati per essere utilizzati con i metadati della scansione automatica. Se le tue immagini hanno superato il periodo di 30 giorni della finestra di analisi continua, puoi eseguire una nuova scansione eseguendo nuovamente il push in Artifact Registry.

Tutti gli esempi in questa pagina accedono direttamente all'API, ma puoi anche utilizzare le librerie client di Container Analysis o i comandi gcloud.

Autorizzazioni obbligatorie

Tutti questi esempi utilizzano il metodo dell'API ListOccurrences. Per chiamare questo metodo, devi disporre del ruolo Visualizzatore delle occorrenze di Container Analysis (roles/containeranalysis.occurrences.viewer) per il progetto che stai analizzando.

  • Se stai analizzando progetti di tua proprietà, disponi già delle autorizzazioni necessarie.

  • Se stai analizzando progetti che non sono di tua proprietà, utilizza le istruzioni per la gestione dell'accesso IAM per concedere le autorizzazioni.

Per ulteriori informazioni sui tipi di accesso per i fornitori e i clienti che utilizzano Artifact Analysis, consulta le autorizzazioni.

Visualizzare tutti i metadati delle vulnerabilità per un'immagine

Utilizza il filtro KIND="VULNERABILITY" con l'ID progetto e l'URL completo della risorsa per l'immagine, incluso 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

Sostituisci quanto segue:

L'output include un elenco di vulnerabilità con dettagli quali la gravità, le opzioni di mitigazione, se disponibili, e il nome del pacchetto contenente la vulnerabilità.

Verificare la presenza di una vulnerabilità specifica in un progetto

Nella maggior parte dei casi, Artifact Analysis utilizza l'ID CVE come identificatore della vulnerabilità. Tuttavia, alcune vulnerabilità elencate nel database di avvisi di GitHub non hanno un ID CVE associato. In questo caso, Artifact Analysis utilizza invece l'ID GHSA.

L'ID vulnerabilità è incluso nel campo noteName. Inizia con il prefisso CVE per gli ID CVE e GHSA per gli ID GHSA. Ad esempio, se il seguente output è il risultato dell'esecuzione del comando per visualizzare tutte le vulnerabilità di un'immagine:

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
    ...

La prima vulnerabilità ha l'ID CVE-2021-32798, la seconda l'ID GHSA-884p-74jh-xrg2.

  1. Ottieni l'identificatore della vulnerabilità.

  2. Utilizza l'ID CVE o l'ID GHSA nella seguente espressione di filtro per recuperare un elenco di immagini interessate:

  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

Sostituisci quanto segue:

  • PROJECT_ID è il tuo ID progetto Google Cloud. Per visualizzare un elenco dei tuoi progetti, puoi utilizzare gcloud projects list.
  • VULN_ID è l'ID della vulnerabilità. L'ID CVE o il numero di ID GHSA, ad esempio CVE-2021-32798 o GHSA-884p-74jh-xrg2.

Ad esempio, la chiamata seguente mostra come recuperare i risultati della ricerca per le immagini del progetto che contengono un'occorrenza di CVE-2023-23915:

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

Sostituisci quanto segue:

  • PROJECT_ID è il tuo ID progetto Google Cloud. Per visualizzare un elenco dei tuoi progetti, puoi utilizzare gcloud projects list.

Cercare le vulnerabilità in più progetti

Utilizza il glob di curl per eseguire query su più progetti.

Ad esempio, lo snippet seguente imposta una variabile per contenere due ID progetto, quindi invia una chiamata API per ogni progetto per cercare le occorrenze.

  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"

Sostituisci quanto segue:

  • PROJECT_ID_1 è l'ID progetto Google Cloud del primo progetto che vuoi esaminare.
  • PROJECT_ID_2 è l'ID progetto Google Cloud del secondo progetto che vuoi esaminare.

Se devi trovare gli ID progetto, puoi visualizzare un elenco dei tuoi progetti utilizzando gcloud projects list.

Non è supportata una singola chiamata API in più progetti.

Ottenere una conoscenza ampia di tutti i metadati di un progetto

Richiedi tutte le occorrenza associate all'ID progetto:

  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

Sostituisci quanto segue:

  • PROJECT_ID è il tuo ID progetto Google Cloud.

L'output include informazioni sulle vulnerabilità e altri tipi di metadati supportati associati al tuo progetto. Ad esempio, il progetto potrebbe avere dettagli di compilazione o attestazioni.

Esegui una query su un'occorrenza specifica per visualizzare tutti i dettagli disponibili

Per visualizzare ulteriori dettagli su una singola occorrenza, utilizza la seguente richiesta.

Ad esempio, se utilizzi Pub/Sub per ricevere notifiche relative alle occorrenze di vulnerabilità, Pub/Sub invia dettagli di base per aiutarti a identificare l'occorrenza che è cambiata e quando. Il payload include un ID occorrenza. Puoi utilizzare l'ID occorrenza per eseguire query sui dettagli al fine di identificare gli aspetti più importanti dei problemi e intervenire.

  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

Sostituisci quanto segue:

  • PROJECT_ID è il tuo ID progetto Google Cloud.
  • OCCURRENCE_ID è un valore numerico dell'elenco di occorrenze dell'esempio precedente. In alternativa, se ricevi un messaggio da Pub/Sub, utilizza il valore numerico alla fine dell'URL nel messaggio.

L'output include informazioni quali tipo di pacchetto, gravità della vulnerabilità, punteggio CVSS e informazioni sulle correzioni, se disponibili.

Passaggi successivi