Gambar Docker dapat menggabungkan binari dan pustaka arbitrer ke dalam satu gumpalan data. Memeriksa apa yang sebenarnya ada di dalam gambar membantu Anda menilai kesesuaiannya dan mengidentifikasi bahaya keamanan apa pun.
Cara termudah untuk menjelajahi konten gambar melibatkan memulai wadah, mendapatkan sesi shell, dan kemudian menggunakan perintah terminal biasa seperti ls
dan cd
untuk melihat struktur direktorinya dari dalam. Ini tidak ideal di lingkungan yang kritis terhadap keamanan – membuat wadah dengan gambar yang tidak dikenal dapat membuat Anda terkena skrip titik masuk yang berbahaya.
Berikut adalah teknik yang dapat Anda gunakan untuk memeriksa file gambar tanpa memulai penampung.
Membuat Wadah Tanpa Memulainya
docker create
adalah mitra yang kurang dikenal untuk docker run
. Itu membuat wadah baru di atas gambar yang diberikan tanpa memulainya. Anda dapat meluncurkannya nanti dengan docker start
perintah.
Membuat wadah baru tidak berbahaya karena akan tetap lembam sampai dijalankan. Anda dapat secara kasar menyamakannya dengan mendefinisikan pengaturan konfigurasi untuk VM yang tidak Anda gunakan. Meskipun diatur untuk boot dari ISO sistem operasi yang tercemar, Anda tidak akan menyebabkan kerusakan apa pun pada lingkungan Anda.
docker create --name suspect-container suspect-image:latest
Perintah di atas membuat wadah baru bernama suspect-container
yang akan didasarkan pada suspect-image:latest
gambar.
Mengekspor Sistem File Penampung
Sekarang Anda memiliki wadah yang valid tetapi berhenti, Anda dapat mengekspor sistem filenya menggunakan docker export
memerintah. Karena penampung belum pernah dimulai, Anda dapat yakin bahwa ekspor secara akurat mewakili sistem file yang ditentukan oleh lapisan gambar Anda.
docker export suspect-container > suspect-container.tar
Anda akan berakhir dengan arsip tar di direktori kerja Anda yang berisi semua yang ada di dalam gambar Anda. Buka atau ekstrak arsip ini menggunakan perangkat lunak favorit Anda untuk menelusuri direktori dan daftar gambar serta melihat file.
Jika Anda tidak perlu menyimpan atau membuka arsip, alih-alih memilih untuk mendapatkan daftar file di terminal Anda, ubah tar
perintah:
docker export suspect-container | tar t > suspect-container-files.txt
tar t
daftar isi arsip masukan. Anda akan mendapatkan daftar semua yang ada di gambar Anda di dalam suspect-container-files.txt
.
Menggunakan “penyimpanan gambar buruh pelabuhan”
Variasi dari teknik ini menggunakan docker image save
. Perintah ini secara langsung menyimpan data gambar ke arsip tar.
docker image save suspect-image:latest > suspect-image.tar
Metode ini menghasilkan arsip yang berfokus pada gambar, bukan wadah yang dibuat darinya. Tar akan menyertakan manifest.json
file, menjelaskan lapisan gambar, dan satu set direktori yang berisi konten dari semua lapisan individu.
Ini berguna saat Anda mengevaluasi peran setiap lapisan dalam membangun gambar. Namun, membuat dan mengekspor penampung yang dihentikan adalah cara yang lebih mudah diakses untuk menelusuri sistem file akhir gambar.
Mendaftarkan Lapisan Dengan “riwayat gambar buruh pelabuhan”
Cara lain untuk memeriksa konten gambar adalah dengan melihat daftar lapisannya dengan docker image history
perintah.
docker image history suspect-image:latest
Ini memperlihatkan instruksi Dockerfile yang menyusun lapisan gambar. Ini tidak akan membiarkan Anda melihat file dan direktori individual di sistem file gambar, tetapi dapat lebih efektif dalam menyoroti perilaku yang mencurigakan.
Setiap baris dalam output perintah mewakili lapisan baru pada gambar. Kolom “CREATED BY” menunjukkan instruksi Dockerfile yang membuat layer.
Memindai daftar lapisan membantu Anda dengan cepat mengidentifikasi tindakan mencurigakan yang dapat menunjukkan bahwa Anda menggunakan gambar berbahaya. Cari biner yang tidak dikenal di RUN
instruksi, perubahan variabel lingkungan yang tidak terduga, dan CMD
yang mencurigakan dan ENTRYPOINT
pernyataan.
Dua lapisan terakhir bisa dibilang yang paling penting untuk dinilai saat memeriksa riwayat gambar. Mereka memberi tahu Anda apa yang akan diluncurkan ketika Anda docker run
atau docker start
sebuah wadah. Jika salah satu instruksi terlihat mencurigakan atau asing, pertimbangkan untuk menggunakan teknik di atas untuk memeriksa sepenuhnya binari atau skrip yang dirujuk.
Mengakses sistem file gambar memberikan tampilan konten yang sangat terperinci di mana konten berbahaya dapat dengan mudah luput dari perhatian, bahkan setelah pemeriksaan manual. Daftar lapisan yang diekspos oleh docker image history
tidak dapat membantu Anda menemukan item sistem file yang disamarkan, tetapi lebih efektif dalam menampilkan operasi berbahaya yang terang-terangan seperti unduhan spyware sembunyi-sembunyi atau penggantian variabel lingkungan.
Alat Pihak Ketiga
Alat sumber terbuka pihak ketiga juga tersedia untuk membantu Anda membuat daftar konten gambar. Ini biasanya menawarkan kemampuan pemfilteran sehingga Anda dapat dengan cepat menghitung paket sistem operasi yang diinstal, dependensi bahasa pemrograman, dan file biasa.
Inspeksi gambar dibangun ke dalam mesin pemindai kontainer Anchore. Anda dapat menggunakannya dengan menjalankan anchore-cli image content my-image:latest
setelah Anda menginstal Anchore. Ini memberikan daftar lengkap konten sistem file gambar target.
Pilihan lainnya adalah Dive, alat yang dibuat secara tegas untuk memvisualisasikan konten gambar. Ini menggunakan pendekatan berbasis lapisan dan menyoroti perubahan sistem file yang dibuat dengan setiap lapisan baru. Anda menelusuri sistem file menggunakan tampilan terminal interaktif berbasis pohon.
Kesimpulan
Gambar Docker biasanya buram pada titik konsumsi. Registri populer tidak menyediakan daftar file di API atau antarmuka pengguna mereka. Fungsionalitas ini juga tidak terintegrasi ke dalam CLI Docker. Meskipun banyak pengembang menggunakan gambar apa adanya, gambar yang tidak diaudit mungkin tidak dapat ditoleransi di lingkungan berisiko tinggi.
Anda dapat memeriksa gambar yang dicurigai dengan mengekspornya ke arsip dan menelusuri kontennya. Hal ini membuat gambar tidak aktif, mencegah konten berbahaya dijalankan, sekaligus memberikan tampilan lengkap sistem file yang akan dibuatnya dalam wadah.
Anda dapat lebih meningkatkan postur keamanan Anda dengan menggabungkan eksplorasi konten manual dengan pemindaian gambar otomatis. Ini mempercepat proses mendeteksi kerentanan yang diketahui tetapi mungkin tidak efektif dalam menemukan file berbahaya baru yang disimpan di lokasi tersembunyi. Menggunakan beberapa teknik memungkinkan Anda menyebarkan cakupan dan menangkap kumpulan file tersangka seluas mungkin.