Menginvestigasi kerentanan

Saat Anda mendengar tentang kerentanan baru, Anda harus segera bertindak. Halaman ini menyediakan daftar panggilan dan filter API penting yang telah dibuat sebelumnya untuk Anda. Gunakan panggilan API ini untuk mengambil hasil pemindaian dari Analisis Artefak dan mengumpulkan informasi tentang status artefak Anda.

Konten ini dirancang untuk digunakan dengan metadata pemindaian otomatis. Jika image Anda telah melampaui periode analisis berkelanjutan selama 30 hari, Anda dapat menjalankan pemindaian baru dengan melakukan push ke Artifact Registry lagi.

Semua contoh di halaman ini mengakses API secara langsung, tetapi Anda juga dapat menggunakan library klien Analisis Penampung, atau perintah gcloud.

Izin yang diperlukan

Semua contoh ini menggunakan metode API ListOccurrences. Untuk memanggil metode ini, Anda memerlukan peran (roles/containeranalysis.occurrences.viewer) Container Analysis Occurrences Viewer untuk project yang sedang Anda analisis.

  • Jika menganalisis project yang Anda miliki, Anda sudah memiliki izin yang diperlukan.

  • Jika Anda menganalisis project yang bukan milik Anda, gunakan petunjuk pengelolaan akses IAM untuk memberikan izin.

Untuk informasi selengkapnya tentang jenis akses untuk penyedia dan pelanggan yang menggunakan Analisis Artefak, lihat izin.

Melihat semua metadata kerentanan untuk image

Gunakan filter KIND="VULNERABILITY" dengan project ID Anda dan URL resource lengkap untuk gambar Anda, termasuk 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

Ganti kode berikut:

Output mencakup daftar kerentanan dengan detail seperti tingkat keparahan, opsi mitigasi jika tersedia, dan nama paket yang berisi kerentanan.

Memeriksa kerentanan tertentu dalam project

Pada umumnya, Analisis Artefak menggunakan ID CVE sebagai ID kerentanan. Namun, ada beberapa kerentanan yang tercantum dalam GitHub Advisory Database yang tidak memiliki ID CVE terkait. Dalam hal ini, Analisis Artefak menggunakan ID GHSA.

ID kerentanan disertakan sebagai bagian dari kolom noteName. ID ini dimulai dengan awalan CVE untuk ID CVE, dan GHSA untuk ID GHSA. Misalnya, jika output berikut adalah hasil dari menjalankan perintah untuk melihat semua kerentanan untuk 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
    ...

Kerentanan pertama memiliki ID CVE-2021-32798, yang kedua memiliki ID GHSA-884p-74jh-xrg2.

  1. Dapatkan ID untuk kerentanan.

  2. Gunakan ID CVE atau ID GHSA dalam ekspresi filter berikut untuk mengambil daftar gambar yang terpengaruh:

  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

Ganti kode berikut:

  • PROJECT_ID adalah ID project Google Cloud Anda. Untuk melihat daftar project, Anda dapat menggunakan gcloud projects list.
  • VULN_ID adalah ID kerentanan. ID CVE atau nomor ID GHSA, seperti CVE-2021-32798 atau GHSA-884p-74jh-xrg2.

Misalnya, panggilan berikut menunjukkan cara mengambil hasil pemindaian untuk gambar dalam project Anda yang memiliki kemunculan 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

Ganti kode berikut:

  • PROJECT_ID adalah ID project Google Cloud Anda. Untuk melihat daftar project, Anda dapat menggunakan gcloud projects list.

Menelusuri kerentanan di beberapa project

Gunakan globbing curl untuk membuat kueri di seluruh project.

Misalnya, cuplikan berikut menetapkan variabel untuk berisi dua project ID, lalu mengirim panggilan API untuk setiap project guna menelusuri kemunculan.

  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"

Ganti kode berikut:

  • PROJECT_ID_1 adalah project ID Google Cloud untuk project pertama yang ingin Anda periksa.
  • PROJECT_ID_2 adalah project ID Google Cloud untuk project kedua yang ingin Anda periksa.

Jika perlu menemukan project ID, Anda dapat melihat daftar project menggunakan gcloud projects list.

Tidak ada dukungan untuk satu panggilan API di beberapa project.

Mendapatkan pemahaman yang luas tentang semua metadata untuk sebuah project

Minta semua kejadian yang terkait dengan project ID Anda:

  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

Ganti kode berikut:

  • PROJECT_ID adalah ID project Google Cloud Anda.

Output mencakup informasi kerentanan dan jenis metadata yang didukung lainnya yang terkait dengan project Anda. Misalnya, project Anda mungkin memiliki detail build atau pengesahan.

Membuat kueri untuk kejadian tertentu guna mendapatkan semua detail yang tersedia

Untuk mendapatkan detail selengkapnya tentang setiap kejadian, gunakan permintaan berikut.

Misalnya, jika Anda menggunakan Pub/Sub untuk mendapatkan notifikasi tentang kemunculan kerentanan, Pub/Sub akan mengirimkan detail dasar untuk membantu Anda mengidentifikasi kemunculan yang berubah dan waktunya. Payload menyertakan ID kemunculan. Anda dapat menggunakan ID kemunculan untuk membuat kueri detail guna membantu Anda melakukan triage masalah dan mengambil tindakan.

  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

Ganti kode berikut:

  • PROJECT_ID adalah ID project Google Cloud Anda.
  • OCCURRENCE_ID adalah nilai numerik dari daftar kemunculan dari contoh sebelumnya. Atau, jika Anda menerima pesan dari Pub/Sub, gunakan nilai numerik di akhir URL dalam pesan tersebut.

Output mencakup informasi seperti jenis paket, tingkat keparahan kerentanan, skor CVSS, dan informasi tentang perbaikan, jika tersedia.

Langkah selanjutnya