Sicherheitslücken untersuchen

Wenn Sie von einer neuen Sicherheitslücke erfahren, ist es wichtig, schnell zu handeln. Auf dieser Seite finden Sie eine Liste wichtiger API-Aufrufe und Filter, die für Sie vordefiniert sind. Mit diesen API-Aufrufen können Sie Scanergebnisse aus der Artefaktanalyse abrufen und Informationen zum Status Ihrer Artefakte erfassen.

Dieser Inhalt ist für die Verwendung mit Metadaten für das automatische Scannen vorgesehen. Wenn für Ihre Images der 30-tägige Zeitraum für die kontinuierliche Analyse abgelaufen ist, können Sie eine neue Suche ausführen, indem Sie noch einmal eine Push-Aktualisierung an die Artifact Registry senden.

In allen Beispielen auf dieser Seite wird direkt auf die API zugegriffen. Sie können aber auch die Clientbibliotheken für die Containeranalyse oder gcloud-Befehle verwenden.

Erforderliche Berechtigungen

In allen diesen Beispielen wird die API-Methode ListOccurrences verwendet. Um diese Methode aufzurufen, benötigen Sie die Rolle Betrachter von Container Analysis-Vorkommen (roles/containeranalysis.occurrences.viewer) für das Projekt, das Sie analysieren.

  • Wenn Sie Projekte analysieren, deren Inhaber Sie sind, haben Sie bereits die erforderlichen Berechtigungen.

  • Wenn Sie Projekte analysieren, deren Inhaber Sie nicht sind, verwenden Sie die Anleitung zur IAM-Zugriffsverwaltung, um Berechtigungen zu gewähren.

Weitere Informationen zu den Zugriffstypen für Anbieter und Kunden, die die Artefaktanalyse verwenden, finden Sie unter Berechtigungen.

Alle Metadaten zu Sicherheitslücken für ein Bild aufrufen

Verwenden Sie den Filter KIND="VULNERABILITY" mit Ihrer Projekt-ID und der vollständigen Ressourcen-URL für Ihr Bild, einschließlich 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

Ersetzen Sie Folgendes:

Die Ausgabe enthält eine Liste mit Sicherheitslücken mit Details wie dem Schweregrad, verfügbaren Optionen zur Risikobewältigung und dem Namen des Pakets, das die Sicherheitslücke enthält.

Nach einer bestimmten Sicherheitslücke in einem Projekt suchen

In den meisten Fällen wird bei der Artefaktanalyse die CVE-ID als Identifikationsmerkmal für die Sicherheitslücke verwendet. In der GitHub Advisory Database sind jedoch einige Sicherheitslücken aufgeführt, die keine zugehörige CVE-ID haben. In diesem Fall wird stattdessen die GHSA-ID verwendet.

Die ID der Sicherheitslücke ist im Feld noteName enthalten. Sie beginnt mit dem Präfix CVE für CVE-IDs und GHSA für GHSA-IDs. Angenommen, die folgende Ausgabe ist das Ergebnis des Befehls zum Ansehen aller Sicherheitslücken für ein Image:

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

Die erste Sicherheitslücke hat die ID CVE-2021-32798, die zweite die ID GHSA-884p-74jh-xrg2.

  1. Rufen Sie die Kennung für die Sicherheitslücke ab.

  2. Verwenden Sie die CVE-ID oder GHSA-ID in diesem Filterausdruck, um eine Liste der betroffenen Images abzurufen:

  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

Ersetzen Sie Folgendes:

  • PROJECT_ID ist Ihre Google Cloud-Projekt-ID. Mit gcloud projects list können Sie eine Liste Ihrer Projekte aufrufen.
  • VULN_ID ist die ID der Sicherheitslücke. Die CVE-ID oder GHSA-ID, z. B. CVE-2021-32798 oder GHSA-884p-74jh-xrg2.

Im folgenden Aufruf wird beispielsweise gezeigt, wie Sie Scanergebnisse für Bilder in Ihrem Projekt abrufen, die CVE-2023-23915 enthalten:

  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

Ersetzen Sie Folgendes:

  • PROJECT_ID ist Ihre Google Cloud-Projekt-ID. Mit gcloud projects list können Sie eine Liste Ihrer Projekte aufrufen.

Nach Sicherheitslücken in mehreren Projekten suchen

Verwenden Sie globbing in curl, um Abfragen für mehrere Projekte auszuführen.

Im folgenden Snippet wird beispielsweise eine Variable mit zwei Projekt-IDs festgelegt und dann für jedes Projekt ein API-Aufruf gesendet, um nach Vorkommen zu suchen.

  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"

Ersetzen Sie Folgendes:

  • PROJECT_ID_1 ist die Google Cloud-Projekt-ID des ersten Projekts, das Sie untersuchen möchten.
  • PROJECT_ID_2 ist die Google Cloud-Projekt-ID des zweiten Projekts, das Sie untersuchen möchten.

Wenn Sie Projekt-IDs benötigen, können Sie mit gcloud projects list eine Liste Ihrer Projekte aufrufen.

Ein einzelner API-Aufruf für mehrere Projekte wird nicht unterstützt.

Alle Metadaten für ein Projekt im Überblick

So fordern Sie alle Vorkommen an, die mit Ihrer Projekt-ID verknüpft sind:

  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

Ersetzen Sie Folgendes:

  • PROJECT_ID ist Ihre Google Cloud-Projekt-ID.

Die Ausgabe enthält Informationen zu Sicherheitslücken und andere unterstützte Metadatentypen, die mit Ihrem Projekt verknüpft sind. Ihr Projekt kann beispielsweise Build-Details oder Attestationen enthalten.

Alle verfügbaren Details zu einem bestimmten Vorkommen abfragen

Wenn Sie weitere Informationen zu einem einzelnen Vorfall erhalten möchten, verwenden Sie die folgende Anfrage.

Wenn Sie beispielsweise Pub/Sub verwenden, um Benachrichtigungen zu Sicherheitslücken zu erhalten, sendet Pub/Sub grundlegende Details, damit Sie erkennen können, was sich wann geändert hat. Die Nutzlast enthält eine Vorkommen-ID. Anhand der Ereignis-ID können Sie Details abrufen, um Probleme zu priorisieren und Maßnahmen zu ergreifen.

  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

Ersetzen Sie Folgendes:

  • PROJECT_ID ist Ihre Google Cloud-Projekt-ID.
  • OCCURRENCE_ID ist ein numerischer Wert aus der Liste der Vorkommen aus dem vorherigen Beispiel. Wenn du eine Nachricht von Pub/Sub erhältst, verwende den numerischen Wert am Ende der URL in dieser Nachricht.

Die Ausgabe enthält Informationen wie Pakettyp, Schwere der Sicherheitslücke, CVSS-Bewertung und Informationen zu Fehlerkorrekturen, sofern verfügbar.

Nächste Schritte