Tutorial Setup gVisor Runtime di Docker VPS: Isolasi Container & Cegah Escape
Poin Kunci Artikel Ini:
- Risiko Sandbox Default Docker & Ancaman Container EscapeDocker default pakai .
- Fitur guna Linux namespaces dan cgroups.
- Container berbagi satu kernel host VPS (shared kernel).Aplikasi web proses unggah berkas atau eksekusi script rentan RCE.
Risiko Sandbox Default Docker & Ancaman Container Escape
Docker default pakai runc. Fitur runc guna Linux namespaces dan cgroups. Container berbagi satu kernel host VPS (shared kernel).
Aplikasi web proses unggah berkas atau eksekusi script rentan RCE. Penyerang eksploitasi syscall kernel host (contoh CVE-2019-5736, CVE-2024-21626), penyerang tembus container. Hasil: penyerang kuasai root host VPS.
Perbandingan Isolasi Container
- runc (Default Docker): Pakai kernel host langsung. Performa cepat. Surface serangan kernel host luas (300+ syscalls).
- Virtual Machine (QEMU/KVM): Kernel dan hardware virtual penuh. Sangat aman. Konsumsi RAM besar, boot lambat.
- gVisor (runsc): Intersepsi syscall di user-space. Keamanan setara VM, efisien setara container.
Cara Kerja gVisor (runsc)
gVisor buatan Google. Komponen utama runsc (run Sandbox Container). Tulis pakai bahasa Go. gVisor cegah container panggil syscall langsung ke kernel host.
Komponen gVisor:
- Sentry: Kernel virtual di user-space. Tangani syscall aplikasi (memori, proses, file system). Syscall langsung ke host ditolak.
- Gofer: Perantara file system. Isolasi I/O, validasi akses berkas sebelum diteruskan ke host.
Exploit RCE cuma rusak kernel virtual Sentry. Kernel asli host VPS tetap aman.
Panduan Install & Konfigurasi gVisor di Docker VPS
Berikut panduan memasang gVisor pada OS Ubuntu 22.04 LTS atau Debian 12 yang sudah terpasang Docker.
Langkah 1: Unduh Binary gVisor (runsc)
Jalankan perintah berikut untuk mengunduh binary runsc dan containerd-shim-runsc-v1 beserta verifikasi checksum SHA512:
(
set -e
ARCH=$(uname -m)
URL=https://storage.googleapis.com/gvisor/releases/release/latest/${ARCH}
wget ${URL}/runsc ${URL}/runsc.sha512
wget ${URL}/containerd-shim-runsc-v1 ${URL}/containerd-shim-runsc-v1.sha512
sha512sum -c runsc.sha512
sha512sum -c containerd-shim-runsc-v1.sha512
chmod a+rx runsc containerd-shim-runsc-v1
sudo mv runsc containerd-shim-runsc-v1 /usr/local/bin/
)Langkah 2: Konfigurasi Docker Daemon
Buka berkas konfigurasi /etc/docker/daemon.json menggunakan editor teks:
sudo nano /etc/docker/daemon.jsonTambahkan runsc ke dalam daftar runtime Docker:
{
"runtimes": {
"runsc": {
"path": "/usr/local/bin/runsc"
}
}
}Langkah 3: Restart Service Docker
Muat ulang konfigurasi daemon Docker dengan menjalankan perintah systemctl:
sudo systemctl restart dockerLangkah 4: Uji Coba Container gVisor
Jalankan container pengujian dengan menambahkan parameter --runtime=runsc:
docker run --rm --runtime=runsc alpine uname -aOutput menampilkan kernel gVisor (misalnya Linux ... gVisor), bukan versi kernel host VPS Anda.
Kesimpulan
Isolasi gVisor aktif. Expose RCE terisolasi di user-space. Kernel host aman dari container escape.
Terapkan runtime runsc pada container publik atau pengeksekusi kode tidak terpercaya sekarang.



