Cara Menemukan Kerentanan dalam Wadah File dengan Grype

Grype adalah pemindai kerentanan sumber terbuka yang menemukan kerentanan dalam gambar wadah dan direktori sistem file. Grype dikembangkan oleh Anchore tetapi bekerja sebagai biner mandiri yang lebih mudah diperoleh daripada Anchore Engine.

Kerentanan yang diketahui memasuki perangkat lunak Anda melalui paket sistem operasi yang ketinggalan zaman, dependensi bahasa pemrograman yang dikompromikan, dan gambar dasar yang tidak aman. Memindai artefak Anda secara aktif memberi tahu Anda tentang masalah sebelum aktor jahat menemukannya. Berikut cara menggunakan Grype untuk menemukan masalah dengan kode dan container Anda.

Memasang Grype

Grype didistribusikan sebagai biner pra-kompilasi di debrpm, sumber Linux, dan format Mac. Anda dapat mengambil rilis terbaru dari GitHub dan menginstalnya di manajer paket sistem Anda atau dengan menyalin biner ke lokasi di jalur Anda. Atau, gunakan skrip instalasi untuk mengotomatiskan proses:

curl -sSfL  | sh -s -- -b /usr/local/bin

Periksa fungsionalitas biner Anda dengan menjalankan grype memesan Dokumentasi tentang perintah yang tersedia akan ditampilkan.

Pemindaian Dasar

Dalam bentuknya yang paling sederhana, Grype mengambil argumen yang menentukan gambar kontainer atau jalur sistem file untuk dipindai. Untuk memindai gambar, berikan tag registri yang valid. Grype akan menggunakan kredensial Docker yang tersedia untuk mengambil gambar dari Docker Hub dan registri pribadi.

grype alpine:latest

Anda juga dapat memindai arsip gambar yang diekspor dari Docker:

grype saved-image.tar

Grype akan mengunduh basis data kerentanannya saat pertama kali dijalankan. Saat ini beratnya sekitar 90MB. Setelah database tersedia, Grype akan mengambil gambar Docker, membuat katalog perangkat lunak di dalamnya, dan mengurai kerentanan yang diketahui yang terkandung dalam database.

Tangkapan layar pemindaian wadah Grype

Hasilnya ditampilkan dalam tabel di dalam terminal Anda. Setiap kerentanan mencakup ID CVE-nya, nama paket yang terpengaruh, dan tingkat keparahannya. Ketika masalah ditambal di rilis berikutnya, Anda akan melihat nomor versi pembaruan itu di FIXED-IN jangkauan. Ini akan membantu Anda menentukan apakah kerentanan dapat dengan mudah diatasi dengan pembaruan sederhana dari manajer paket.

Grype dapat bekerja dengan paket untuk semua distribusi Linux paling populer. Ini juga mendukung paket Ruby Gems, NPM dan Benang, Python Eggs, Wheels, dan dependensi Poetry, dan modul Java dalam format JAR, WAR, EAR, JPI, dan HPI.

Memindai Sistem File

Grype dapat memindai jalur sistem file pada mesin Anda. Ini memungkinkan Anda menemukan kerentanan dalam repositori kode sumber sebelum Anda membuat gambar. Untuk menggunakan fitur ini, tentukan jalur direktori dengan dir: skema:

grype dir:/example-dir

Grype akan mencari file yang cocok bersarang di bawah root direktori yang diberikan. Setiap file yang ditemukan akan diindeks dan dipindai untuk mengetahui kerentanannya.

Tangkapan layar dari pemindaian sistem file Grype

Pemindaian sistem file memunculkan jenis kerentanan yang sama dengan pemindaian gambar kontainer. Pemindaian mungkin memerlukan beberapa menit untuk diselesaikan jika Anda bekerja dengan pohon direktori besar.

Menyaring Kelemahan

Dua tanda pemfilteran didukung untuk memberikan cakupan laporan ke kerentanan atau opsi remediasi yang Anda minati:

  • --only-fixed – Hanya tampilkan kerentanan yang telah ditambal pada rilis berikutnya dari paket yang terpengaruh.
  • --fail-on high – Segera keluar dengan kode kesalahan saat a high-mendeteksi kelemahan tingkat. Anda dapat mengganti tingkat kesalahan yang didukung (kritis, tinggi, sedang, atau rendah) sebagai gantinya high.

Mengabaikan Kelemahan

Kerentanan dapat diabaikan untuk menyembunyikan kesalahan positif atau masalah yang Anda putuskan untuk tidak ditangani, mungkin karena tidak relevan dengan penggunaan paket oleh Anda.

Untuk mengganti kerentanan, Anda perlu membuat file konfigurasi Grype kustom dalam format YAML. Tambahkan CVE kerentanan di bawah level teratas ignore bidang:

ignore:
  - vulnerability: CVE-2021-12345

Bidang lain juga didukung, seperti varian ini untuk mengabaikan semua masalah yang timbul dari paket NPM:

ignore:
  - package:
      type: npm

Simpan file konfigurasi Anda ke .grype.yaml Hai .grype/config.yaml di direktori kerja Anda. Ini akan digunakan secara otomatis saat berikutnya Anda menjalankan pemindaian Grype. File konfigurasi global ~/.grype.yaml juga didukung. File di direktori kerja Anda akan dimasukkan ke dalam direktori global saat runtime.

Kerentanan tidak akan mempengaruhi kode keluar Grype jika diabaikan. Laporan JSON akan memindahkannya ke yang terpisah ignoredMatches bidang sementara tabel terminal melaporkan sepenuhnya mengecualikannya. Jika Anda mengabaikan kerentanan, ingatlah untuk mendokumentasikan mengapa kerentanan itu diterima sehingga setiap kontributor memahami risikonya.

Menggunakan SBOM

Grype dapat bekerja dengan SBOM yang dikembangkan oleh Syft, salah satu proyek Anchore. Syft mengindeks gambar kontainer Anda untuk menghasilkan daftar dependensi yang dikandungnya.

Gunakan Syft untuk membuat SBOM untuk gambar Anda dalam format JSON:

syft alpine:latest -o json > alpine-sbom.json

Kemudian jalankan pemindaian Grype menggunakan SBOM:

grype sbom:/alpine-sbom.json

Grype akan memeriksa gambar referensi untuk kerentanan baru yang muncul dari tagihan materialnya. Lanjutkan menggunakan Grype di SBOM Anda untuk melacak masalah yang muncul dengan dependensi gambar yang telah Anda audit dan indeks.

Menyesuaikan Output Grype

Grype menyediakan empat pemformat keluaran berbeda yang dapat Anda alihkan menggunakan -o Bendera CLI:

  • table – Tabel default yang dapat dibaca manusia untuk konsumsi dalam terminal.
  • json – Laporan berformat JSON yang berisi informasi yang lebih luas tentang setiap kerentanan, serta detail database Grype yang digunakan untuk pemindaian. File JSON cocok untuk pengarsipan dan perbandingan jangka panjang, atau digunakan sebagai artefak build CI.
  • cyclonedx – Laporan yang kompatibel dengan CycloneDX dalam format XML yang siap digunakan dengan alat lain yang mendukung SBOM dan daftar kerentanan.
  • template – Pemformat canggih ini memungkinkan Anda membuat laporan sendiri dalam format sewenang-wenang.

Itu template formatter menerima template Go yang akan digunakan untuk merender keluaran laporan. Untuk menggunakan formatter ini, jangan tentukan dengan nama – sebagai gantinya, teruskan path ke file yang berisi template Go Anda:

grype alpine:latest -o output-template.tmpl

Template harus menggunakan sintaks template Go untuk mereferensikan variabel yang disediakan oleh Grype. Anda dapat menghasilkan semua jenis format file yang Anda butuhkan, seperti halaman HTML, file penurunan harga, atau struktur JSON khusus. Dokumen Grype menyertakan contoh pembuatan file CSV dari variabel yang tersedia.

Basis Data Kerentanan

Basis data kerentanan menyimpan detail semua kerentanan yang diketahui di Grype. Setelah diunduh, versi cache akan digunakan lagi hingga pembaruan tersedia. Interaksi database manual biasanya tidak diperlukan.

Dalam beberapa kasus, Anda mungkin perlu memaksa unduhan basis data. Ini mungkin karena Anda menyiapkan server dengan celah udara sebelum menjalankan pemindaian. Menggunakan grype db check dan grype db update perintah untuk memeriksa dan mengunduh versi database yang lebih baru.

Setelah database tersedia, pemindaian akan berjalan saat sistem Anda offline. Anda dapat menonaktifkan pembaruan otomatis database Grype dengan mengatur GRYPE_DB_AUTO_UPDATE variabel lingkungan di false di cangkangmu.

Ringkasan

Grype memberi tahu Anda tentang kerentanan dalam wadah dan sistem file Anda. Sebagai biner CLI mandiri, lebih mudah untuk memulai daripada instalasi Anchore penuh.

Jika Anda bertanya-tanya mana yang harus Anda pilih, nilai Anchore terletak pada opsi perluasan dan konfigurasi lanjutannya. Dengan Anchore Engine, Anda dapat menentukan kumpulan kebijakan Anda sendiri berdasarkan gerbang, pemicu, dan tindakan. Ini memungkinkan Anda untuk secara tepat menyesuaikan pemindaian Anda dengan lingkungan spesifik Anda. Grype memberikan pengalaman yang lebih ramping ketika Anda hanya menginginkan daftar kerentanan yang diketahui dalam gambar Anda.

Apa pun yang Anda pilih, menggunakan beberapa bentuk pemindaian kerentanan proaktif akan memberi Anda informasi tentang kerentanan dalam rantai pasokan perangkat lunak Anda. Untuk pendekatan yang sepenuhnya terintegrasi, gunakan Grype sebagai bagian dari saluran CI Anda untuk memperingatkan Anda tentang kerentanan baru saat kode dikomit.

Leave a Comment

Your email address will not be published. Required fields are marked *