Pengantar

Container menjadi teknologi penting dalam pengembangan aplikasi modern karena proses deployment dapat dilakukan dengan lebih cepat dan konsisten. Namun, isolasi container bukan berarti sistem sepenuhnya terpisah dari host.

Salah satu ancaman yang perlu diperhatikan adalah Container Escape. Serangan ini terjadi ketika penyerang berhasil keluar dari lingkungan container dan memperoleh akses ke sistem host. Jika berhasil, dampaknya dapat meluas ke container lain atau bahkan infrastruktur cloud.

Karena itu, memahami cara kerja dan mitigasi Container Escape menjadi bagian penting dari keamanan lingkungan Docker maupun Kubernetes.


Apa Itu Container Escape?

Pengertian Container Escape

Container Escape adalah kondisi ketika proses yang berjalan di dalam container berhasil melewati batas isolasi dan berinteraksi dengan sistem host di luar hak akses yang seharusnya.

Container memang memberikan isolasi terhadap proses dan resource. Namun, container tetap menggunakan kernel host. Artinya, kerentanan pada kernel, container runtime, atau konfigurasi yang terlalu longgar dapat membuka jalan menuju host.

NIST menjelaskan bahwa teknologi container memiliki berbagai risiko keamanan yang perlu diperhatikan, termasuk aspek isolasi, konfigurasi, image, runtime, dan host. (dikutip dari: NIST SP 800-190 – Application Container Security Guide)

baca juga : Amcache.hve Forensics: Mengungkap Jejak Program dan Bukti Digital di Windows


Bagaimana Container Escape Bisa Terjadi?

1. Container Berjalan dengan Privilege Berlebihan

Konfigurasi seperti privileged container dapat memberikan kemampuan jauh lebih besar dibandingkan container biasa. Kondisi ini meningkatkan risiko ketika aplikasi di dalam container berhasil dikompromikan.

Karena itu, privilege sebaiknya diberikan hanya jika benar-benar diperlukan.

2. Kerentanan pada Container Runtime

Docker, containerd, dan komponen runtime lainnya berinteraksi langsung dengan sistem host. Kerentanan pada komponen tersebut dapat menjadi jalur bagi penyerang untuk melewati batas isolasi.

Patch keamanan menjadi penting karena container tetap bergantung pada keamanan host dan runtime.

3. Host Mount yang Tidak Aman

Mount direktori sensitif dari host ke dalam container dapat mengurangi efektivitas isolasi. Jika akses tersebut terlalu luas, penyerang yang sudah menguasai container dapat mencoba memanfaatkannya untuk memengaruhi sistem host.

4. Kernel atau Komponen Host yang Rentan

Container berbagi kernel dengan host. Oleh sebab itu, kerentanan kernel dapat memberikan dampak terhadap container yang berjalan di atasnya.

OWASP juga menekankan pentingnya menjaga host dan Docker tetap diperbarui untuk mengurangi risiko kerentanan Container Escape. (dikutip dari: OWASP Docker Security Cheat Sheet)


Apa Dampaknya?

Akses ke Host

Dampak paling serius adalah ketika penyerang berhasil memperoleh akses ke sistem host. Pada kondisi tersebut, batas keamanan antara container dan host sudah tidak lagi efektif.

Mengakses Container Lain

Jika host menjalankan banyak container, kompromi terhadap host dapat meningkatkan risiko terhadap workload lain yang berada pada node yang sama.

Pencurian Data dan Credential

Host atau environment container dapat menyimpan informasi sensitif seperti konfigurasi aplikasi, secret, token, maupun credential. Akses yang tidak semestinya dapat menyebabkan data tersebut terekspos.

Pergerakan ke Infrastruktur Lain

Dalam lingkungan cloud dan Kubernetes, kompromi terhadap satu node dapat menjadi titik awal untuk melakukan pergerakan lebih jauh. Risiko tersebut semakin besar jika konfigurasi identity, network, dan permission tidak dibatasi dengan baik.


Cara Mencegah Container Escape

Jalankan Container sebagai Non-Root

Hindari menjalankan aplikasi sebagai root jika tidak diperlukan. Gunakan user dengan privilege minimum sehingga dampak ketika aplikasi berhasil dikompromikan dapat dikurangi.

Hindari Privileged Container

Gunakan mode privileged hanya ketika benar-benar diperlukan. Untuk aplikasi umum, konfigurasi tersebut sebaiknya dihindari.

Terapkan Least Privilege

Batasi Linux capabilities dan permission sesuai kebutuhan aplikasi. Semakin sedikit hak akses yang diberikan, semakin kecil pula peluang penyalahgunaan privilege.

Perbarui Host dan Container Runtime

Pastikan kernel, Docker, containerd, Kubernetes, dan komponen terkait mendapatkan patch keamanan terbaru.

Selain itu, gunakan image yang berasal dari sumber terpercaya dan lakukan scanning terhadap vulnerability sebelum image digunakan dalam production.

Gunakan Container Sandboxing

Untuk workload dengan tingkat risiko tinggi atau lingkungan multi-tenant, lapisan sandbox tambahan dapat memberikan isolasi yang lebih kuat.

Teknologi seperti gVisor, Kata Containers, dan pendekatan berbasis virtual machine dapat digunakan sebagai lapisan tambahan ketika isolasi container standar dianggap belum mencukupi.

baca juga : Encrypted Client Hello (ECH): Teknologi Baru untuk Menyembunyikan SNI dan Meningkatkan Privasi TLS


Cara Mendeteksi Indikasi Container Escape

Tim keamanan dapat memperhatikan aktivitas yang tidak biasa di dalam container maupun host.

Beberapa indikator yang perlu dipantau antara lain:

  • Container tiba-tiba menjalankan shell dengan privilege tinggi.
  • Proses mencoba mengakses resource host.
  • Terjadi akses tidak wajar terhadap /proc, /sys, atau filesystem sensitif.
  • Container mencoba mengakses perangkat atau interface yang tidak diperlukan.
  • Muncul proses baru pada host yang tidak berasal dari workload yang dikenal.
  • Terjadi koneksi jaringan keluar yang tidak sesuai dengan fungsi aplikasi.

Monitoring runtime dapat membantu mendeteksi aktivitas tersebut lebih cepat.


Mengapa Container Bukan Pengganti Virtual Machine?

Container dan virtual machine memiliki pendekatan isolasi yang berbeda. Container berbagi kernel host, sedangkan virtual machine menggunakan guest operating system yang berjalan di atas hypervisor.

Karena itu, container tidak boleh dianggap sebagai pengganti penuh virtual machine dalam semua skenario keamanan.

Untuk workload yang membutuhkan tingkat isolasi tinggi, kombinasi container dengan sandbox atau virtualisasi tambahan dapat menjadi pendekatan yang lebih aman.

baca juga : Service Mesh Mutual TLS (mTLS): Cara Mengamankan Komunikasi Antar-Microservices


Kesimpulan

Container Escape merupakan ancaman serius karena dapat mengubah kompromi pada sebuah aplikasi menjadi kompromi terhadap sistem host.

Risikonya dapat dikurangi dengan menerapkan least privilege, menjalankan container sebagai non-root, menghindari privileged container, memperbarui runtime dan kernel, serta menggunakan sandbox tambahan untuk workload berisiko tinggi.

Dengan demikian, keamanan container tidak hanya bergantung pada image yang digunakan. Konfigurasi runtime, host, permission, monitoring, dan proses patching juga memiliki peran penting dalam menjaga batas isolasi.