Menginvestigasi kerentanan

Saat Anda mendengar tentang kerentanan baru, bertindak cepat adalah hal yang penting. 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 gambar Anda telah melampaui jangka waktu 30 hari analisis berkelanjutan, Anda dapat menjalankan pemindaian baru dengan mengirimkan lagi ke Artifact Registry.

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

Izin yang diperlukan

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

  • Jika Anda 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 mengetahui informasi selengkapnya tentang jenis akses bagi penyedia dan pelanggan yang menggunakan Analisis Artefak, lihat izin.

Melihat semua metadata kerentanan untuk image

Gunakan filter kind=VULNERABILITY dengan project ID 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

Dengan:

  • PROJECT_ID adalah Google Cloud project ID Anda.
  • RESOURCE_URL adalah URL lengkap gambar, dalam format: https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH. https:// harus disertakan di awal URL. Jika perlu menemukan URL gambar, Anda dapat menggunakan panggilan di bagian Melihat semua metadata untuk project.

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

Memeriksa kerentanan tertentu dalam project

Dalam sebagian besar kasus, 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. Dimulai dengan prefiks CVE untuk ID CVE, dan GHSA untuk ID GHSA. Pertimbangkan contoh output berikut dari menjalankan perintah untuk melihat semua kerentanan 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
    ...

Dalam contoh ini, kerentanan pertama memiliki ID CVE-2021-32798, dan kerentanan kedua memiliki ID GHSA-884p-74jh-xrg2.

Setelah memiliki ID kerentanan, Anda dapat menjalankan perintah berikut untuk mengambil daftar image yang terpengaruh dalam project Anda yang memiliki ID kemunculan VULN_ID:

  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

Dengan:

  • PROJECT_ID adalah Google Cloud project ID Anda.
  • VULN_ID adalah ID kerentanan sebagai ID CVE atau nomor ID GHSA, seperti CVE-2021-32798 atau GHSA-884p-74jh-xrg2.

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 mengirimkan 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"

Dengan:

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

Melihat semua metadata untuk project

Minta semua kemunculan 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

Dengan:

  • PROJECT_ID adalah Google Cloud project ID 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.

Memeriksa paket tertentu dalam project

Analisis Artefak membuat dependensi paket untuk artefak yang dipindai. Untuk menemukan semua artefak yang memiliki paket tertentu sebagai dependensi, Anda dapat memfilter berdasarkan nama paket:

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

Dengan:

  • PROJECT_ID adalah Google Cloud project ID Anda.
  • PACKAGE_NAME adalah nama paket.

Melihat semua metadata paket untuk gambar

Untuk melihat semua jenis metadata paket yang berbeda untuk gambar, gunakan filter kind=PACKAGE_NAME dengan ID project dan URL resource gambar lengkap:

 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

Dengan:

  • PROJECT_ID adalah Google Cloud project ID Anda.
  • RESOURCE_URL adalah URL lengkap gambar, dalam format https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH. https:// harus disertakan di awal URL. Jika Anda perlu menemukan URL untuk gambar, Anda dapat menggunakan panggilan dari Melihat semua metadata untuk project.

Output mencakup daftar dependensi dengan nama, versi, dan informasi lisensi dependensi.

Membuat kueri kemunculan tertentu untuk semua detail yang tersedia

Anda dapat menjalankan kueri untuk mengetahui detail selengkapnya tentang kemunculan. 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 kapan perubahan tersebut terjadi.

Payload menyertakan ID kemunculan. Anda dapat menggunakan ID kemunculan untuk membuat kueri detail guna membantu Anda memilah 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

Dengan:

  • PROJECT_ID adalah Google Cloud project ID Anda.
  • OCCURRENCE_ID dapat berupa salah satu dari berikut, bergantung pada output perintah dari Melihat semua metadata untuk project:

    • Nilai numerik dari daftar kemunculan.
    • Nilai numerik di akhir URL dari pesan Pub/Sub.

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

Langkah berikutnya