Penggunaan wadah untuk pengembangan dan penyebaran perangkat lunak telah lama menjadi praktik standar. Kemampuan untuk dengan mudah menyediakan program dengan lingkungan standar yang tidak tergantung pada host tempat program itu berjalan, dengan cepat mengubah pengaturan, menambah atau mengubah beberapa komponen dalam wadah, sangat dihargai oleh banyak pengembang. Tapi ini hanya sebagian kecil dari semua chip yang memberikan teknologi containerization.

Seperti biasa, perkembangan teknologi dan pertumbuhan popularitasnya disertai dengan identifikasi berbagai metode penggunaan non-standar, termasuk malware. Pada artikel ini, kita juga akan melihat risiko keamanan dari proses pengembangan yang terkait dengan penggunaan kontainer dan berbicara tentang mengapa proses DevOps harus diubah menjadi DevSecOps.
Untuk mulai dengan, mengapa wadah memenangkan simpati pengembang dan bagaimana penggunaan kontainer mengubah pengembangan secara keseluruhan.
Keripik
RinganDibandingkan dengan mesin virtual dan server "besi", kontainer sepenuhnya tidak membutuhkan sumber daya. Ini memungkinkan Anda untuk menjalankan lebih banyak kontainer secara signifikan pada satu mesin daripada mesin virtual. Pengembang bahkan dapat menjalankan komponen aplikasi pada komputernya dalam bentuk microservices kemas dan dia tidak harus tertidur menunggu tanggapan dari sistem. Karena kenyataan bahwa wadah berbagi inti dari sistem, start dan stop mereka jauh lebih cepat daripada me-restart mesin virtual.
IsolasiMeskipun berbagi kernel, aplikasi dalam wadah berjalan secara terpisah dari bagian lain dari sistem dan aplikasi. Ini berarti bahwa kesalahan dalam aplikasi hanya akan mempengaruhi wadah tertentu.
Menggunakan wadah selama pengembangan memungkinkan Anda untuk keluar dari konflik abadi pengembang dan administrator sistem atas hak istimewa. Wadah memisahkan aplikasi dengan aman dari sistem, sehingga pemrogram dapat melakukan percobaan apa pun tanpa takut merusak OS.
PortabilitasSetiap aplikasi berjalan dalam wadah contoh sendiri dengan file konfigurasinya sendiri. Ini menghilangkan sakit kepala yang terkait dengan memindahkan aplikasi antara host: semua yang diperlukan untuk pekerjaan disimpan di dalam wadah dan ditransfer bersama dengan komponen lain dari aplikasi.
Repositori kontainerMunculnya standar
Open Container Initiative telah memungkinkan untuk membuat perpustakaan umum gambar kontainer dan menciptakan ekosistem yang kuat yang menggabungkan mesin kontainer, platform cloud dan alat untuk mengelola kontainer, pemeriksaan keamanan dan tugas-tugas lainnya.
OtomasiMenggunakan wadah memungkinkan Anda untuk membangun rantai yang sepenuhnya otomatis dari penerapan-integrasi berkelanjutan (CI / CD), di mana bagian "manual" akan terutama menulis kode. Menguji, memeriksa kualitas kode, mengemas aplikasi dalam gambar Docker, menempatkan gambar pada Docker Hub dan menyebarkannya ke host untuk dieksekusi dapat dilakukan tanpa campur tangan manusia.
Ancaman Kontainer
Tentunya dengan segala kelebihannya, wadah memiliki berbagai kekurangan. Misalnya, masalah dengan kinerja aplikasi yang menuntut dan portabilitas gambar yang terbatas dibangun untuk berbagai arsitektur. Namun selain masalah teknologi, kontainer memiliki masalah keamanan.
Berbagi kernelSeperti biasa, kerugian adalah sisi lain dari keuntungan. Pembagian kernel mengurangi redundansi kontainer dibandingkan dengan mesin virtual, tetapi jumlah yang lebih besar dari syscall yang diizinkan membuat penghalang keamanan lebih tipis dan mengeksploitasi kerentanan kernel memungkinkan menyerang semua kontainer sekaligus. Anda tidak dapat mengingat tentang serangan sensasional
Specter and
Meltdown , yang memungkinkan Anda membaca memori proses atau kernel lain dari ruang pengguna.
Repositori publikKehadiran registrasi publik dengan gambar menyediakan berbagai pilihan "pembungkus" untuk kontainer, tetapi menciptakan ancaman tambahan, karena secara default server registri dipercaya. Jika penyerang berhasil memodifikasi gambar dasar dengan pustaka jahat, perubahan akan secara otomatis didistribusikan ke semua server yang menyimpan gambar pangkalan ini, dan semua wadah yang menggunakan pustaka akan secara otomatis mendapatkan fungsionalitas berbahaya.
Contohnya
- Pada Juni 2018, 17 kontainer dengan kode berbahaya telah dihapus dari portal Docker Hub , tetapi sebelum itu, selama beberapa bulan, mereka berhasil diunduh lebih dari satu juta kali.
- Pada bulan September 2018, contoh serangan terhadap paket instalasi Python diterbitkan di GitHub , di mana file setup.py telah dimodifikasi untuk menjalankan kode berbahaya ketika menginstal paket. Karena, sebagai aturan, file ini hanya digunakan untuk menambah modul, beberapa orang memeriksa isinya .
- Pada Oktober 2018, informasi diterbitkan tentang 12 perpustakaan jahat yang diunggah ke direktori PyPi . Perpustakaan berisi kode untuk mengumpulkan data, mempertahankan kehadiran pada host yang terinfeksi, meluncurkan shell terbalik, dan mengganti alamat Bitcoin-wallet dengan alamat penyerang .
- Pada November 2018, salah satu ketergantungan perpustakaan Event-Stream yang digunakan di banyak proyek besar mendeteksi kode berbahaya yang dirancang untuk mencuri mata uang digital dan melakukan serangan pada layanan yang terkait dengan alat virtual. Event-Stream adalah perpustakaan populer dengan sekitar 2 juta unduhan harian dari repositori NPM.
- Pada Januari 2019, kerentanan kritis dilaporkan dalam modul acar pustaka NumPy Python yang populer , yang dengannya Anda bisa mendapatkan kemampuan untuk mengeksekusi kode dari jarak jauh.
Dengan demikian, satu perpustakaan jahat sudah cukup untuk kompromi aplikasi. Tentu saja, kerentanan dan fungsi jahat di perpustakaan populer bukan masalah wadah seperti itu, tetapi teknologi yang memastikan penyebaran perubahan gambar yang cepat.
Rekomendasi
Jelas, proses pengembangan modern membutuhkan pendekatan baru, pendekatan di mana keamanan akan diintegrasikan ke dalam rantai CI / CD, mengubah DevOps menjadi DevSecOps.

Menurut Gartner, pada 2019
- lebih dari 70% proses pengembangan perusahaan akan mencakup kerentanan otomatis dan analisis konfigurasi komponen open-source dan paket komersial.
- lebih dari 50% proses CI / CD akan berisi pemeriksaan keamanan kode bawaan wajib;
- lebih dari 60% perusahaan akan menggunakan kontrol versi dan kontrol otomatisasi infrastruktur dalam pengembangannya.
Pertimbangkan beberapa komponen yang harus ada dalam proses sehingga kata "Sec" dalam namanya bukan frase kosong.
Integrasi pemeriksaan ke dalam semua prosesPemeriksaan keamanan harus ada pada semua tahap proses pengembangan mulai dari pembuatan kode hingga pengemasan dan penyebarannya.
Otomasi Audit KeamananIni perlu karena dua alasan:
- Ini akan mengurangi kesalahan administrasi dan kesalahan konfigurasi.
- Profesional keamanan tidak perlu memverifikasi kode secara manual dan mengubah pengaturan.
API untuk fitur keamananPenerapan fungsi semacam itu mengharuskan sistem keamanan menyediakan API untuk akses ke semua fitur. Jadi pengembang tidak hanya dapat menggunakan sistem untuk verifikasi, tetapi juga menerapkan panggilan yang sesuai ke dalam kode.
Kontrol Akses Berbasis PeranProfesional keamanan yang berbeda memerlukan tingkat akses yang berbeda ke mekanisme verifikasi, tergantung pada peran mereka, karena itu perlu bahwa pengembang tidak dapat mengubah pengaturan keamanan, tetapi selanjutnya tidak bertanggung jawab atas ancaman yang telah menembus.
Kompatibilitas API Docker RegistryIdealnya, perlindungan harus mendukung pemindaian gambar Docker di registri apa pun yang mendukung API Docker Registry V2 untuk memastikan kompatibilitas dengan semua pendaftar populer.
Perlindungan migrasiUntuk pengguna korporat, momen berbahaya adalah transisi dari arsitektur monolitik ke arsitektur layanan mikro. Penting bahwa fitur keamanan diintegrasikan ke dalam proses integrasi, memberikan perlindungan dalam mode otomatis.
Contoh dari solusi perlindungan adalah Deep Micro Smart Security dari Trend Micro, yang secara terus menerus memindai gambar secara otomatis, mengidentifikasi kerentanan dan malware. Smart Check mendukung Docker Trusted Registry, Amazon Elastic Container Registry, Azure Container Registry, dan platform wadah Google Container Registry. Selain itu, Trend Micro terintegrasi dengan sistem SIEM terkemuka dan alat orkestrasi seperti Jenkins, Kubernetes, SumoLogic, Splunk.
Fitur penting dari Smart Check adalah kepatuhannya terhadap semua persyaratan peraturan dalam hal pemeriksaan kerentanan kritis dan pencatatan kejadian.
Penerapan keamanan kontainer dalam proses DevOps pada tahap awal pengembangan sebelum meluncurkan aplikasi akan memungkinkan pengembangan perangkat lunak yang lebih andal dan produktif, serta
- Mendeteksi malware dan perpustakaan.
- Identifikasi kerentanan.
- Kesalahan yang benar sebelum gambar ditransfer ke alat orkestrasi (mis. Kubernetes).
- Mencegah kode jahat mengeksekusi dan menggunakan perangkat lunak yang rentan.