Kenapa container tidak sama dengan virtual machine
Risiko mitigasi darurat dan modul kernel
algif_aead.
Langkah mitigasi darurat ini terdengar sederhana, tetapi membawa risiko regresi aplikasi yang cukup besar. Jika aplikasi web atau service di dalam container kita bergantung pada fungsi kriptografi kernel tersebut dan tidak memiliki mekanisme fallback (pengalihan otomatis) ke fungsi user-space, aplikasi bisa langsung berhenti bekerja atau melempar error koneksi. Pengelola server akhirnya dihadapkan pada pilihan sulit: membiarkan modul aktif dengan risiko keamanan celah kernel, atau mematikan modul tetapi memicu downtime pada layanan.
Selain itu, mitigasi sementara sering kali membutuhkan reboot server agar konfigurasi modul benar-benar bersih dari memori kerja kernel. Menunda reboot sama saja dengan membiarkan celah tersebut tetap terbuka bagi penyerang yang menggunakan skrip eksploitasi otomatis.
Cara memeriksa sharing kernel dan batasan kapabilitas
BASH
# Periksa versi kernel pada host
uname -r
# Jalankan container alpine dan periksa kernel yang terbaca di dalamnya
docker run --rm alpine uname -r--privileged saat menjalankan container agar konfigurasi terasa mudah. Menjalankan container dengan opsi --privileged sama saja dengan mematikan hampir seluruh mekanisme pembatasan bawaan Docker.
Kamu bisa membatasi risiko serangan dengan prinsip least privilege, yaitu mencabut kapabilitas Linux (Linux capabilities) yang tidak dibutuhkan oleh container aplikasi web:
BASH
# Menjalankan container dengan mencabut seluruh kapabilitas default,
# lalu hanya memberikan hak akses yang benar-benar dibutuhkan
docker run -d \
--name web-app \
--cap-drop=ALL \
--cap-add=NET_BIND_SERVICE \
--read-only \
nginx:alpine