GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Menemukan Kerentanan Dalam Wadah dan File Dengan Grype

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

Kerentanan yang diketahui masuk ke 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 Anda informasi tentang masalah sebelum aktor jahat menemukannya. Berikut cara menggunakan Grype untuk menemukan masalah dalam kode dan container Anda.

Menginstal Grype

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

curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin

Periksa kerja biner Anda dengan menjalankan grype memerintah. Dokumentasi tentang perintah yang tersedia akan ditampilkan.

Pemindaian Dasar

Dalam bentuknya yang paling sederhana, Grype mengambil satu 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 registry pribadi.

grype alpine:latest

Anda juga dapat memindai arsip gambar yang telah 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 menarik image Docker, membuat katalog perangkat lunak di dalamnya, dan mengurai kerentanan yang diketahui ada dalam database.

Hasilnya ditampilkan dalam tabel di dalam terminal Anda. Setiap kerentanan mencakup ID CVE-nya, nama paket yang terpengaruh, dan tingkat keparahannya. Saat masalah telah ditambal pada rilis berikutnya, Anda akan melihat nomor versi pembaruan tersebut di FIXED-IN kolom. Ini membantu Anda menentukan apakah kerentanan dapat segera diatasi dengan pembaruan pengelola paket sederhana.

Grype dapat bekerja dengan paket untuk semua distribusi Linux paling populer. Ini juga mendukung paket Ruby Gems, NPM dan Yarn, 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 di 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 kompatibel bersarang di bawah root direktori yang diberikan. Setiap file yang ditemukan akan diindeks dan dipindai untuk mengetahui kerentanannya.

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

Memfilter Kerentanan

Dua tanda pemfilteran didukung untuk membatasi laporan hanya pada opsi kerentanan atau resolusi yang Anda minati:

  • --only-fixed – Hanya tampilkan kerentanan yang telah ditambal pada rilis berikutnya dari paket yang terpengaruh.
  • --fail-on high – Keluar segera dengan kode kesalahan saat high -tingkat kerentanan ditemukan. Anda dapat mengganti tingkat kesalahan yang didukung (kritis, tinggi, sedang, atau rendah) alih-alih high .

Mengabaikan Kerentanan

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

Untuk mengabaikan kerentanan, Anda perlu membuat file konfigurasi Grype kustom dalam format YAML. Tambahkan CVE kerentanan di bawah ignore tingkat atas bidang:

ignore:
  - vulnerability: CVE-2021-12345

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

ignore:
  - package:
      type: npm

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

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

Menggunakan SBOM

Grype dapat bekerja dengan SBOM yang dihasilkan 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 yang direferensikan untuk kerentanan baru yang timbul dari tagihan materialnya. Tetap gunakan Grype dengan SBOM Anda untuk memantau masalah yang muncul dalam 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 jauh lebih komprehensif tentang setiap kerentanan, serta detail database Grype yang digunakan untuk pemindaian. File JSON cocok untuk pengarsipan dan perbandingan jangka panjang, atau digunakan sebagai artefak pembuatan CI.
  • cyclonedx – Laporan yang kompatibel dengan CycloneDX dalam format XML yang siap dimasukkan ke dalam alat lain yang mendukung SBOM dan daftar kerentanan.
  • template – Pemformat tingkat lanjut ini memungkinkan Anda membuat laporan sendiri dalam format arbitrer.

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

Templat harus menggunakan sintaks templating Go untuk merujuk variabel yang disediakan Grype. Anda dapat membuat format file apa pun 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 Grype. Setelah diunduh, versi yang di-cache akan digunakan kembali hingga pembaruan tersedia. Interaksi manual dengan database biasanya tidak diperlukan.

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

Setelah database tersedia, pemindaian akan berfungsi saat sistem Anda offline. Anda dapat menonaktifkan pemeriksaan pembaruan basis data otomatis Grype dengan menyetel GRYPE_DB_AUTO_UPDATE variabel lingkungan menjadi false di cangkang Anda.

Ringkasan

Grype memperingatkan Anda tentang kerentanan di dalam wadah Anda dan di sistem file Anda. Sebagai biner CLI mandiri, lebih mudah untuk memulai daripada menginstal Anchore penuh.

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

Apa pun yang Anda pilih, mengadopsi beberapa bentuk pemindaian kerentanan aktif akan memberi Anda informasi tentang kelemahan dalam rantai pasokan perangkat lunak Anda. Untuk pendekatan yang sepenuhnya terintegrasi, gunakan Grype sebagai bagian dari pipeline CI Anda sehingga Anda diberi tahu tentang kerentanan baru saat kode di-commit.


Docker
  1. Cara Menemukan File Dengan Izin SUID dan SGID di Linux

  2. Cara Menemukan file besar linux dengan perintah find dan du

  3. Cara Menemukan dan Menghapus Direktori dan File Kosong di Unix

  1. Cara Menemukan File Konfigurasi MySQL, PHP dan Apache

  2. Bagaimana menemukan semua file yang diakhiri dengan .rb dengan Linux?

  3. Temukan file dan tar (dengan spasi)

  1. Cara Menemukan Jumlah File dalam Direktori dan Subdirektori

  2. Cara Menemukan File dengan Perintah fd di Linux

  3. Cara Menemukan dan Menghapus Direktori dan File Kosong di Linux