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 vorkonfiguriert sind. Mit diesen API-Aufrufen können Sie Scanergebnisse aus der Artefaktanalyse abrufen und Informationen zum Status Ihrer Artefakte erfassen.

Diese Inhalte sind für die Verwendung mit Metadaten für das automatische Scannen vorgesehen. Wenn Ihre Bilder das 30-tägige Fenster für die kontinuierliche Analyse überschritten haben, können Sie einen neuen Scan ausführen, indem Sie die Bilder noch einmal in Artifact Registry übertragen.

In allen Beispielen auf dieser Seite wird direkt auf die API zugegriffen. Sie können aber auch die Container Analysis-Clientbibliotheken 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, die Ihnen nicht gehören, folgen Sie der Anleitung zur IAM-Zugriffsverwaltung, um Berechtigungen zu erteilen.

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

Alle Metadaten zu Sicherheitslücken für ein Image ansehen

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

Wobei:

  • PROJECT_ID ist die Projekt-ID Ihres Google Cloud .
  • RESOURCE_URL ist die vollständige URL des Bildes im Format https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH. https:// muss am Anfang der URL stehen. Wenn Sie die URL für ein Bild benötigen, können Sie den Aufruf unter Alle Metadaten für ein Projekt ansehen verwenden.

Die Ausgabe enthält eine Liste mit Sicherheitslücken und Details wie den Schweregrad, gegebenenfalls Optionen zur Risikominderung und den Namen des Pakets, das die Sicherheitslücke enthält.

Nach einer bestimmten Sicherheitslücke in einem Projekt suchen

In den meisten Fällen wird die CVE-ID als Kennzeichnung für die Sicherheitslücke verwendet. Einige Sicherheitslücken in der GitHub Advisory Database haben jedoch keine zugehörige CVE-ID. In diesem Fall wird stattdessen die GHSA-ID verwendet.

Die Sicherheitslücken-ID ist im Feld noteName enthalten. Sie beginnt mit dem Präfix CVE für CVE-IDs und GHSA für GHSA-IDs. Sehen Sie sich die folgende Beispielausgabe an, die beim Ausführen des Befehls zum Anzeigen aller Sicherheitslücken für ein Image generiert wird:

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

In diesem Beispiel hat die erste Sicherheitslücke die ID CVE-2021-32798 und die zweite Sicherheitslücke die ID GHSA-884p-74jh-xrg2.

Nachdem Sie die Sicherheitslücken-ID haben, können Sie den folgenden Befehl ausführen, um eine Liste der betroffenen Images in Ihrem Projekt abzurufen, die die Ereignis-ID VULN_ID haben:

  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

Wobei:

  • PROJECT_ID ist die Projekt-ID Ihres Google Cloud .
  • VULN_ID ist die ID der Sicherheitslücke als CVE-ID oder GHSA-ID-Nummer, z. B. CVE-2021-32798 oder GHSA-884p-74jh-xrg2.

Projektübergreifend nach Sicherheitslücken suchen

Verwenden Sie Globbing mit curl, um projektübergreifende Abfragen zu stellen.

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"

Wobei:

  • 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 für das zweite Projekt, das Sie untersuchen möchten.

Alle Metadaten für ein Projekt ansehen

Alle Vorkommen abrufen, 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

Wobei:

  • PROJECT_ID ist die Projekt-ID Ihres Google Cloud .

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

Nach einem bestimmten Paket in einem Projekt suchen

Bei der Artefaktanalyse werden Paketabhängigkeiten für gescannte Artefakte erstellt. Wenn Sie alle Artefakte finden möchten, für die ein bestimmtes Paket eine Abhängigkeit ist, können Sie nach dem Paketnamen filtern:

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

Wobei:

  • PROJECT_ID ist die Projekt-ID Ihres Google Cloud .
  • PACKAGE_NAME ist der Name des Pakets.

Alle Paketmetadaten für ein Bild ansehen

Wenn Sie alle verschiedenen Arten von Paketmetadaten für ein Bild aufrufen möchten, verwenden Sie den Filter kind=PACKAGE_NAME mit Ihrer Projekt-ID und der vollständigen Bildressourcen-URL:

 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

Wobei:

  • PROJECT_ID ist die Projekt-ID Ihres Google Cloud .
  • RESOURCE_URL ist die vollständige URL des Bildes im Format https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH. https:// muss am Anfang der URL stehen. Wenn Sie die URL für ein Bild benötigen, können Sie den Aufruf aus Alle Metadaten für ein Projekt ansehen verwenden.

Die Ausgabe enthält eine Abhängigkeitsliste mit dem Namen, der Version und den Lizenzinformationen der Abhängigkeit.

Alle verfügbaren Details zu einem bestimmten Vorkommen abfragen

Sie können eine Abfrage ausführen, um weitere Informationen zu einem Vorkommen zu erhalten. Wenn Sie beispielsweise Pub/Sub verwenden, um Benachrichtigungen über das Auftreten von Sicherheitslücken zu erhalten, sendet Pub/Sub grundlegende Details, mit denen Sie die Änderung und den Zeitpunkt der Änderung erkennen können.

Die Nutzlast enthält eine Vorkommen-ID. Anhand der Ereignis-ID können Sie Details abfragen, um Probleme zu beheben 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

Wobei:

  • PROJECT_ID ist die Projekt-ID Ihres Google Cloud .
  • OCCURRENCE_ID kann je nach Ausgabe des Befehls aus Alle Metadaten für ein Projekt ansehen einer der folgenden Werte sein:

    • Ein numerischer Wert aus einer Liste von Vorkommen.
    • Der numerische Wert am Ende der URL aus einer Pub/Sub-Nachricht.

Die Ausgabe enthält Informationen wie Pakettyp, Schweregrad der Sicherheitslücke, CVSS-Score und Informationen zu Korrekturen, sofern verfügbar.

Nächste Schritte