Pengantar

Docker sering dipandang sebagai solusi isolasi yang aman dan ringan dibanding virtual machine. Namun, di balik efisiensinya, terdapat satu risiko serius yang kerap menjadi mimpi buruk tim keamanan: Docker Escape.

Docker escape terjadi ketika proses di dalam kontainer berhasil keluar dari batas isolasi dan mendapatkan akses ke host operating system. Jika ini terjadi, seluruh sistem—termasuk kontainer lain—berpotensi dikompromikan.


Apa Itu Docker Escape?

Docker escape adalah kondisi ketika sebuah kontainer mampu:

  • Mengakses resource host secara langsung

  • Menjalankan perintah di luar namespace kontainer

  • Mengambil alih kontrol sistem host

Meskipun Docker menggunakan mekanisme isolasi seperti Linux namespaces dan cgroups, kesalahan konfigurasi atau celah kernel dapat membuka jalan keluar dari sandbox kontainer.

baca juga : Buffer Overflow: Bagaimana ASLR dan DEP Berusaha Mematahkan Eksploitasi Memori


Bagaimana Kontainer Seharusnya Terisolasi?

Docker mengandalkan beberapa fitur inti Linux untuk menciptakan isolasi.

Linux Namespaces

Namespaces memisahkan resource seperti:

  • Proses (PID)

  • Network

  • Filesystem

  • User ID

Tujuannya adalah agar proses di dalam kontainer tidak melihat proses host.

Control Groups (cgroups)

Cgroups membatasi penggunaan:

  • CPU

  • Memory

  • Disk I/O

Tanpa cgroups, kontainer bisa menyedot resource host secara berlebihan.


Jalur Umum Terjadinya Docker Escape

Docker escape biasanya bukan bug tunggal, melainkan kombinasi kelemahan teknis dan human error.

1. Kontainer Berjalan dengan Hak Istimewa (Privileged Mode)

Menjalankan kontainer dengan --privileged memberikan akses hampir setara root host.

Dalam kondisi ini:

  • Device host terbuka

  • Kernel capability dilepas

  • Isolasi menjadi sangat lemah

Docker sendiri menyatakan bahwa privileged container menghilangkan sebagian besar proteksi keamanan (dikutip dari docker).

2. Mounting Direktori Sensitif Host

Jika direktori seperti /var/run/docker.sock atau /proc di-mount ke dalam kontainer, penyerang dapat:

  • Mengontrol Docker daemon

  • Membuat kontainer baru dengan hak penuh

  • Mengambil alih host

Kasus ini sering terjadi akibat konfigurasi CI/CD yang ceroboh.

3. Eksploitasi Kerentanan Kernel Linux

Docker berbagi kernel dengan host. Artinya:

  • Bug kernel = risiko untuk semua kontainer

  • Exploit seperti privilege escalation dapat menembus isolasi

Laporan keamanan menunjukkan bahwa sebagian besar kasus container escape berakar dari kernel vulnerability (dikutip dari nccgroup).

4. Capability Linux yang Terlalu Longgar

Secara default, Docker menghapus banyak capability. Namun jika ditambahkan kembali secara manual:

  • Kontainer bisa memuat modul kernel

  • Mengakses device berbahaya

  • Melakukan syscall sensitif

baca juga : Egress Filtering: Mengapa Membatasi Koneksi Keluar (Outbound) Sama Pentingnya dengan Menghalau Serangan Masuk (Inbound)


Dampak Docker Escape pada Infrastruktur

Docker escape bukan sekadar insiden teknis, melainkan ancaman sistemik.

Risiko yang Ditimbulkan

  • Pengambilalihan host OS

  • Akses ke seluruh kontainer lain

  • Kebocoran data lintas layanan

  • Persistensi malware di level host

Dalam lingkungan cloud dan Kubernetes, satu kontainer yang lolos bisa berdampak ke seluruh cluster.

Strategi Mitigasi Docker Escape

Mencegah docker escape membutuhkan pendekatan defense-in-depth.

Praktik Keamanan yang Direkomendasikan

  • Hindari penggunaan --privileged

  • Jangan mount docker socket ke kontainer

  • Gunakan seccomp, AppArmor, atau SELinux

  • Update kernel dan Docker secara rutin

  • Jalankan kontainer sebagai non-root user

baca juga : DNS dan Recursive DNS: Apa Bedanya dan Mengapa Keduanya Penting?


Kesimpulan

Docker escape adalah bukti bahwa kontainer bukanlah benteng absolut. Isolasi Docker sangat kuat jika dikonfigurasi dengan benar, namun bisa runtuh akibat satu kesalahan kecil.

Memahami bagaimana docker escape terjadi membantu tim DevOps dan keamanan: