Kontainer Rootless Podman dan Eksploit Copy Fail
(garrido.io)- CVE-2026-31431 Copy Fail memungkinkan pengguna lokal tanpa hak istimewa mendapatkan shell
root, dan bahkan di dalam kontainer rootless Podman, eskalasi hak istimewa kerootdi dalam kontainer juga dimungkinkan - Kontainer rootless Podman menggabungkan namespace pengguna, pemisahan UID, dan Linux capabilities untuk memetakan
rootdi dalam kontainer ke pengguna host tanpa hak istimewa serta membatasi hak akses host - Dalam pengujian, pengguna
foodi kontainer rootless non-root dapat menjadirootdi dalam kontainer setelah menjalankan Copy Fail, tetapi hak aksesnya dibatasi pada cakupan yang dapat dilakukan oleh pengguna host tanpa hak istimewabar, dan tidak dapat membaca file milikrootdi host - Jika menerapkan
--security-opt=no-new-privilegesatau--cap-drop=all, maka bahkan setelah menjalankan Copy Fail, shell tetap berada sebagaifoodengan capabilitiesnone, sehingga mencegah perolehan shellrootlangsung dan peningkatan capability - Dampak Copy Fail dapat bertahan melampaui siklus hidup kontainer sehingga diperlukan patch kernel dan reboot, dan pertahanan berlapis seperti root filesystem hanya-baca, pembatasan resource cgroups, image runtime yang ramping, dan firewall juga harus diterapkan
Cakupan Paparan Copy Fail dan Kontainer Rootless Podman
- CVE-2026-31431 dipublikasikan pada 29 April di copy.fail, dan dengan menjalankan skrip Python yang dipublikasikan, pengguna lokal tanpa hak istimewa dapat memperoleh shell
root - Copy Fail juga dapat dieksploitasi di dalam kontainer Linux, dan memungkinkan perolehan shell
rootdi dalam kontainer rootless Podman - Dalam pengujian,
rootkontainer dibatasi pada tingkat host ke cakupan hak akses pengguna tanpa hak istimewabaryang menjalankan kontainer - Implementasi rootless Podman menggabungkan namespace pengguna, pemisahan UID, dan Linux capabilities untuk membatasi hak akses host dari proses kontainer
- Copy Fail menunjukkan bahwa bahkan kontainer rootless tidak kebal terhadap kerentanan, tetapi cakupan serangan pasca-kompromi dapat dikurangi melalui konfigurasi Podman
Cara Kerja Kontainer Rootless
-
Contoh dasar: pengguna tanpa hak istimewa
barmenjalankan server HTTP- Lingkungan contoh terdiri dari pengguna tanpa hak istimewa
bardengan UID1001yang membangun image berbasisubuntu:latestdengan Podman dan menjalankanpython3 -m http.server - Jika dilihat dari host dengan
ps, prosespython3berjalan sebagai milik penggunabar - Podman menggunakan model fork/exec, sehingga proses kontainer menjadi turunan dari proses
podman run, dan melalui pemisahan UID umum, proses kontainer dapat dipisahkan dariroothost maupun pengguna lain - Dalam konfigurasi Docker umum, meskipun pengguna tanpa hak istimewa menjalankan
docker run, klien Docker berkomunikasi dengan daemon berhakroot, dan daemon itulah yang akhirnya membuat proses kontainer, sehingga di host proses kontainer dapat terlihat sebagairoot
- Lingkungan contoh terdiri dari pengguna tanpa hak istimewa
-
Rootless rootful
- Image kontainer biasanya menjalankan perintah kontainer sebagai
rootinternal jika tidak ada instruksiUSEReksplisit atau flag--user - Dalam output
podman top, proses server HTTP dipetakan ke pengguna host1001, tetapi berjalan sebagai penggunarootdi dalam kontainer - Konfigurasi ini adalah keadaan rootless rootful: berjalan sebagai pengguna tanpa hak istimewa di host, tetapi sebagai
rootdi dalam kontainer
- Image kontainer biasanya menjalankan perintah kontainer sebagai
-
Namespace pengguna
- Kontainer rootless Podman menggunakan namespace pengguna untuk memetakan UID/GID secara berbeda di dalam dan di luar kontainer
- Dalam contoh,
rootdengan UID internal kontainer0dipetakan kebardengan UID host1001 - Konfigurasi
bar:165536:65536di/etc/subuidmenentukan rentang UID yang dapat dialokasikan ke proses namespace milikbar - Dalam contoh, selain UID
1001milikbar, UID dari165536hingga231072dapat dialokasikan ke prosesbar - Jika menjalankan
sleepsebagai pengguna internal kontainerwww-data, di dalam akan terlihat sebagaiwww-data, tetapi di host ditampilkan sebagai165568 - Jika masuk ke namespace pengguna dengan
podman unshare, direktori home yang di host dimilikibar:barakan terlihat sebagairoot:rootdi dalam namespace - Docker juga mendukung namespace pengguna, tetapi memerlukan konfigurasi terpisah dan hanya mengizinkan satu namespace pengguna, sedangkan Podman menjalankan kontainer rootless tiap pengguna UNIX di namespace pengguna milik pengguna tersebut
-
Operasi berhak akses dan Linux capabilities
- Podman menggunakan Linux capabilities untuk memberikan hak akses root yang terperinci kepada proses kontainer
- Selama build image, pekerjaan seperti
apt installdimungkinkan melalui kombinasi capability sepertichown,dac_override,fowner,setgid,setuid,net_bind_service, dansys_chroot - Jika semua capability dihapus dengan
podman build --cap-drop=all,aptakan gagal padasetgroups,setegid,seteuid,chown, dan lainnya sehingga build image gagal - Dimungkinkan juga menambahkan hanya capability yang diperlukan, dan dalam contoh
CAP_SETUID,CAP_SETGID,CAP_CHOWN,CAP_DAC_OVERRIDE,CAP_FOWNERditambahkan untuk melakukan instalasi paket - Dalam keadaan eksekusi default, server HTTP berjalan sebagai
rootdi dalam kontainer dan memiliki banyak effective capabilities sepertiCHOWN,DAC_OVERRIDE,FOWNER,FSETID,KILL,NET_BIND_SERVICE,SETFCAP,SETGID,SETPCAP,SETUID,SYS_CHROOT - Karena server HTTP tidak memerlukan hak akses tersebut, semua capability dapat dihapus dengan
podman run --cap-drop=all, dan dalam kondisi inipodman topmenampilkan effective capabilities sebagainone
-
Rootless non-root
- Untuk menjalankan server HTTP sebagai pengguna tanpa hak istimewa juga di dalam kontainer, Anda bisa memakai pengguna yang sudah ada di
/etc/passwd, misalnyawww-data, atau membuat pengguna khusus saat build image - Dalam contoh, pengguna dan grup
foodengan UID1002dibuat, lalu diberikan izin baca ke/var/www/htmldanUSER foo:fooditetapkan - Jika image ini dijalankan dengan
--cap-drop=all, proses akan menjadifoodi dalam kontainer, UID host166537, dan effective capabilitiesnone - Proses kontainer harus dijalankan dengan hak akses minimum yang diperlukan; misalnya, jika
fooperlu bind ke port berhak80, maka--cap-add=CAP_NET_BIND_SERVICEharus ditambahkan - Cara menjalankan kontainer dibagi menjadi empat kategori
- pengguna host
root+ kontainerroot: root rootful - pengguna host
root+ pengguna tanpa hak istimewa di kontainer: root non-root - pengguna host tanpa hak istimewa + kontainer
root: rootless rootful - pengguna host tanpa hak istimewa + pengguna tanpa hak istimewa di kontainer: rootless non-root
- pengguna host
- Podman memudahkan menjalankan kontainer rootless rootful, dan jika proses kontainer bisa dijalankan sebagai pengguna tanpa hak istimewa, konfigurasi rootless non-root juga relatif mudah dibuat
- Untuk menjalankan server HTTP sebagai pengguna tanpa hak istimewa juga di dalam kontainer, Anda bisa memakai pengguna yang sudah ada di
Bind mount dan isolasi UID
- Saat direktori host dimount ke kontainer, apakah file yang dimiliki host
root, hostbar, dan namespacefoobisa diakses akan bergantung pada pemetaan UID - Dalam contoh, file
root.txtmilik hostrootdanbar.txtmilik hostbardibuat di direktori/var/lib/bar/test, lalu dimount baca/tulis ke/testdi dalam kontainer - Jika kontainer dijalankan sebagai
foo, file milik hostbarakan terlihat sebagairoot:rootdi dalam kontainer, sedangkan file milik hostroottidak dipetakan ke namespace sehingga terlihat sebagainobody:nogroup foodi dalam kontainer tidak dapat membacabar.txtmaupunroot.txt, dan rootless non-root memberikan isolasi tambahan dibanding rootless rootfulfoo.txtyang dibuatfoodi direktori mount akan terlihat di host sebagai dimiliki UID166537, dan pengguna hostbartidak dapat membaca isi file tersebut- Jika kontainer dijalankan sebagai
rootinternal,rootnamespace dapat membaca file milik hostbardan file milikfoo, tetapi tetap tidak dapat membaca file milik hostroot - Jika dijalankan sebagai
rootinternal sambil menerapkan--cap-drop=all, maka file milikfoojuga tidak bisa dibaca, dan hanya file milik hostbaryang bisa dibaca
Pengujian Copy Fail
-
Kondisi pengujian
- Pengujian Copy Fail menggunakan versi eksploit dari commit yang awalnya dipublikasikan,
8e918b5 - Image kontainer contoh dibangun dari image server HTTP yang sudah ada dengan menambahkan
curlagar skrip eksploit bisa diunduh dari dalam kontainer - Nama image dibangun sebagai
copyfail - Kernel uji adalah
6.12.74+deb13+1-amd64dari Debian, dan berdasarkan Debian, versi terbaru di bawah6.12.85masih bisa dianggap sebagai kernel yang belum ditambal - Secara umum, jika pengguna tak berprivilege
foomemanggilsu, maka kata sandirootakan diminta - Dalam setiap pengujian, pengguna kontainer mengunduh skrip Copy Fail ke
/tmplalu menjalankannya, dan jika berhasil memperoleh shellroot, makasleepakan dipanggil - Karena Copy Fail tetap bertahan melampaui siklus hidup kontainer, VM di-reboot sebelum setiap pengujian
- Pengujian Copy Fail menggunakan versi eksploit dari commit yang awalnya dipublikasikan,
-
Hasil pada rootless rootful
- Jika kontainer dijalankan dengan
--user=root, maka proses di dalam kontainer sejak awal sudah berstatusroot - Dalam kondisi ini, saat skrip Copy Fail dijalankan dan
sudipanggil, shelluid=0(root)memang diperoleh, tetapi karena penggunarootpada dasarnya bisa membuka shell root lain lewatsutanpa kata sandi, Copy Fail praktis tidak menambah apa pun - Di
podman top,/bin/bash,python3 copy_fail_exp.py,su, dansleepsemuanya terlihat sebagairootdi dalam kontainer dan pengguna host1001 - Set capability yang sama tetap dipertahankan, dan terlihat
CHOWN,DAC_OVERRIDE,FOWNER,FSETID,KILL,NET_BIND_SERVICE,SETFCAP,SETGID,SETPCAP,SETUID,SYS_CHROOT rootinternal dapat membacabar.txtdanfoo.txtdi/testyang dimount, tetapi tidak dapat membacaroot.txtmilik hostroot
- Jika kontainer dijalankan dengan
-
Hasil pada rootless non-root
- Setelah kontainer dijalankan sebagai
foo, menjalankan skrip Copy Fail lalu memanggilsuakan menaikkan hak akses kerootdi dalam kontainer idpada shell hasilnya ditampilkan sebagaiuid=0(root) gid=1002(foo) groups=1002(foo)- Di
podman top,/bin/bashawal, proses eksekusi eksploit, dan pemanggilansuterlihat sebagai UID host166537, pengguna kontainerfoo, dan capabilitiesnone - Setelah eskalasi hak akses,
[sh]dansleepterlihat sebagai pengguna host1001, pengguna kontainerroot, dan memperoleh set capability yang sama seperti rootless rootful rootkontainer yang telah ditingkatkan hak aksesnya juga tetap tidak dapat membacaroot.txtmilik hostroot- Dalam kondisi ini kontainer memang telah dikompromikan, tetapi cakupan serangannya dibatasi pada ruang lingkup yang bisa dilakukan kontainer dan pengguna host tak berprivilege
bar
- Setelah kontainer dijalankan sebagai
-
Hasil saat
no-new-privilegesditerapkan- Podman dapat menggunakan
--security-opt=no-new-privilegesagar proses kontainer tidak memperoleh hak akses lebih besar daripada saat mulai berjalan - Jika opsi ini diterapkan ke kontainer rootless non-root lalu Copy Fail dijalankan, shell tetap terbuka tetapi masih berstatus
uid=1002(foo) - Di
podman topjuga, semua proses tetap sebagai UID host166537, pengguna kontainerfoo, dan capabilitiesnone - Pada
/testyang dimount,foojuga hanya bisa membaca file miliknya sendiri dan tidak bisa membacabar.txtmaupunroot.txt - Kontainer tetap dikompromikan, tetapi dibatasi pada pengguna internal tak berprivilege
footanpa capability
- Podman dapat menggunakan
-
Hasil saat
--cap-drop=allditerapkan- Meski kontainer rootless non-root dijalankan dengan
--cap-drop=all,foopada dasarnya memang tidak memiliki capability - Dalam kondisi ini, saat Copy Fail dijalankan dan
sudipanggil, shell yang terbuka tetap berstatusuid=1002(foo) - Di
podman top,/bin/bash, eksekusi eksploit,su, shell, dansleepsemuanya tetap dalam statusfoodan capabilitiesnone - Eksploit gagal memperoleh shell
root, danfoohanya dapat membaca file miliknya sendiri di/test - Hasil ini mirip dengan pengujian
no-new-privileges, dan kedua langkah ini dapat digunakan bersama untuk secara efektif mengurangi paparan capability
- Meski kontainer rootless non-root dijalankan dengan
-
Persistensi eksploit
- Walaupun perolehan shell
rootdan capability secara langsung dapat dicegah denganno-new-privilegesatau--cap-drop=all, efek eksploit itu sendiri tetap tersisa - Jika setelahnya kontainer baru dijalankan tanpa pembatasan capability, pengguna kontainer tak berprivilege
foobisa menjadirootkontainer hanya dengan memanggilsu - Karena itu, patch kernel dan reboot tetap diperlukan
- Walaupun perolehan shell
Strategi pertahanan berlapis
-
Image hanya-baca
- Menambahkan
--read-onlykepodman runakan me-mount filesystem root kontainer sebagai hanya-baca - Secara default, Podman me-mount beberapa direktori seperti
/tmp,/run, dan/var/tmpagar dapat ditulisi, jadi untuk membuatnya benar-benar hanya-baca, perlu menambahkan--read-only-tmpfs=false - Jika kontainer hanya-baca berhasil dibobol, penulisan ke sistem tidak diizinkan sehingga beberapa serangan pasca-eksploitasi dapat dibatasi
- Namun, karena output
curlbisa di-pipe kepython3, pengaturan hanya-baca saja tidak mencegah eksekusi eksploit itu sendiri - Server HTTP
python3pada contoh tidak memerlukan penulisan ke filesystem sehingga opsi ini dapat digunakan dengan aman - Banyak image prebuilt mengasumsikan akses tulis ke direktori tertentu, sehingga mungkin tidak berfungsi dengan baik pada filesystem root hanya-baca
- Filesystem root hanya-baca bersifat terpisah dari volume writable yang terpasang ke kontainer, dan saat terjadi kompromi, direktori mount tersebut tetap bisa ditulisi
- Menambahkan
-
Pembatasan sumber daya
- Docker dan Podman dapat menggunakan cgroups untuk membatasi sumber daya yang diberikan ke kontainer
- Kontainer tidak memerlukan memori, CPU, dan PID tanpa batas
- Setelah memeriksa penggunaan sumber daya kontainer dengan
podman stats, pembatasan dapat diterapkan sesuai kebutuhan
-
Membatasi biner yang tersedia
- Contoh menggunakan image
ubuntudemi penyederhanaan, tetapi imageubuntumenyertakan banyak biner yang dapat digunakan penyerang saat terjadi kompromi - Sebagian besar biner tersebut tidak diperlukan untuk menjalankan server HTTP
- Sebaiknya image runtime dibuat setipis mungkin
- Build multistage dapat digunakan untuk memisahkan lingkungan build-time dan runtime
- Dapat menggunakan image bertujuan khusus seperti python3, varian
-slimmilik Debian, atau distro yang lebih kecil sepertialpine - Jika kompatibel dengan proses kontainer, distroless images atau
scratchdapat digunakan untuk membuat runtime tanpa shell, package manager, dan utilitas sistem
- Contoh menggunakan image
-
Firewall
iptablesataunftablesdapat digunakan untuk membatasi proses kontainer dengan firewall- Hanya koneksi masuk dan keluar yang benar-benar diperlukan oleh proses kontainer yang boleh diizinkan
- Pada contoh server HTTP, koneksi ke DNS atau server lokal/jarak jauh tidak diperlukan, sehingga pembatasan dapat dibuat dengan hanya mengizinkan paket
tcpyang datang dari koneksi masuk yang sudah terbentuk
Implikasi operasional
- Kontainer rootless Podman standar secara default menyediakan isolasi yang lebih baik daripada konfigurasi kontainer Docker standar
- Docker juga mendukung menjalankan secara rootless dan penggunaan user namespace tanpa hak istimewa, tetapi memerlukan lebih banyak upaya konfigurasi dibanding Podman, dan perbedaan arsitektur juga berpengaruh
- Docker masih digunakan secara luas, dan alat self-hosting seperti Dokku, Kamal, Coolify, dan Dokploy juga menggunakan Docker secara default
- Jika image Docker Hub dijalankan tanpa peninjauan memadai atau tanpa menerapkan penguncian, layanan dapat berjalan dengan permukaan serangan yang lebih luas daripada yang dibutuhkan
- Detail implementasi image kontainer harus dipahami
- Harus diketahui pengguna atau para pengguna mana yang menjalankan proses kontainer
- Harus diketahui direktori mana pada filesystem root yang menjadi dependensi proses kontainer
- Harus dibedakan Linux capabilities yang diperlukan dan yang tidak diperlukan
- Dengan menggabungkan berbagai mekanisme yang disediakan Podman dan kontainer, kontainer dapat diperkeras dan blast radius saat terjadi kompromi dapat dikurangi
- Tergantung pada workload, kontainer tidak boleh dijadikan satu-satunya batas keamanan yang diandalkan
- Pemisahan yang efektif dapat dicapai dengan menggunakan kontainer bersama mesin fisik atau virtual yang terpisah
- Podman menyediakan cara untuk mengisolasi setiap workload bahkan dalam host yang sama dengan menjalankannya sebagai pengguna tanpa hak istimewa yang terpisah dan dengan user namespace masing-masing
1 komentar
Opini Lobste.rs
Fokus seharusnya pada primitif dasar yang dimungkinkan oleh kerentanan ini, bukan hanya pada eksploit yang sudah dipublikasikan
Kerentanan ini memungkinkan penulisan ke page cache terlepas dari status read-only, sehingga kontainer berbahaya dapat memodifikasi halaman yang berasal dari file image dasar overlayfs, dan tergantung cara kontainer dideploy, dampaknya bisa menjalar ke kontainer lain juga
Dalam konfigurasi rootless seperti ini, targetnya adalah kontainer lain yang berjalan sebagai pengguna yang sama di sistem host
Cara eksploit lain adalah menjalankan atau menemukan kontainer berbasis image dasar yang diketahui sudah digunakan, lalu memodifikasi page cache di dalam kontainer itu sehingga kontainer lain yang berbagi runtime dan data overlayfs yang sama akan mengeksekusi kode tersebut
Rootless dan namespace pengguna memang penting, tetapi di sini tidak banyak membantu; seperti yang dikatakan situs copy.fail, di kontainer sebaiknya dipertimbangkan untuk memblokir system call
socket(AF_ALG, ...)dengan seccompAkan bagus kalau dijelaskan lebih rinci apa yang dimaksud dengan “tergantung cara kontainer dideploy”
Keuntungan rootless Podman adalah, tergantung workload-nya, Anda tidak harus menjalankan kontainer di host sebagai pengguna yang sama
Kalau yang dimaksud adalah menjalankan banyak kontainer rootless sebagai pengguna workstation utama, saya setuju, tetapi di server masing-masing bisa dipisah ke pengguna yang berbeda, dan image kontainer yang sama pun bisa dijalankan sebagai pengguna non-privileged yang berbeda
Ini cukup berbeda dari default Docker yang kebanyakan menjalankan semuanya sebagai
root, tetapi saya juga menulis di akhir artikel bahwa ini bukan batas keamanan yang ultimate, dan apakah tepat membagi kontainer rootless ke beberapa pengguna non-privileged bergantung pada kasus penggunaannyaBeberapa workload tertentu saya pisahkan menggunakan VM
Saya penasaran apakah pernyataan bahwa rootless dan namespace pengguna tidak membantu di sini maksudnya adalah dalam hal mencegah eksploit
Saya belum pernah menerapkan kebijakan seccomp eksplisit pada kontainer, jadi saya tidak membahasnya, tetapi ini jadi alasan bagus untuk mempelajarinya lebih lanjut
Saya suka Podman dan kontainer rootless, tetapi setelah melihat CopyFail saya sampai pada kesimpulan yang sama seperti komentar saudara
Bahkan dengan keuntungan kontrol akses tambahan dari
podman+rootless, ini kembali menegaskan nasihat klasik bahwa kontainer bukan batas keamanan, dan satu eksploit kernel saja bisa menembus semuanyaSaya hanya mengelola sistem sebagai hobi, tetapi sebagai perkembangan baru di area ini saya melihat libkrun backend for crun with podman
Janjinya adalah bisa menangani sebagian besar workload yang sudah dikontainerisasi apa adanya, tetapi secara internal dijalankan di MicroVM dengan guest kernel terpisah; namun saya tidak tahu tingkat kematangan, validasi di dunia nyata, atau audit keamanannya, dan sebagian tampak cukup cutting-edge
Karena MicroVM sedang diadopsi secara aktif oleh alat coding LLM, kondisi seperti itu mungkin tidak akan bertahan lama
podman machinejuga tampak menjanjikan, tetapi sayangnya itu tampaknya hanya ditujukan untuk workstation developer dan memakai model satu VM eksekusi kontainer per sistem hostMeski begitu, saya rasa ungkapan “kontainer bukan batas keamanan” terlalu menyederhanakan. Kontainer jelas merupakan batas keamanan, hanya saja tidak sekuat yang ingin kita percayai
Pada deployment lokal, garis ini sedikit lebih kabur
Dari sudut pandang hardware, VM tidak secara inheren lebih aman daripada proses, tetapi ada tiga alasan mengapa batasnya lebih bisa dipertahankan
Escape dari VM lebih jarang dibanding system call, sehingga ada ruang untuk menerapkan lebih banyak mitigasi side-channel tanpa mengorbankan performa
Antarmuka host VM jauh lebih sederhana. Perangkat blok memiliki antarmuka baca/tulis berbasis blok, dan perangkat jaringan mengirim serta menerima frame
Panggilan
setsockoptyang disediakan Linux atau *BSD pada socket merupakan permukaan serangan yang jauh lebih besar daripada kebanyakan driver emulasi atau paravirtualisasi, padahal itu sendiri hanya sebagian kecil sekali dari seluruh permukaan serangan kernelAntarmuka VM juga memiliki state yang jauh lebih sedikit. Ada transaksi yang sedang berjalan pada ring model request-response, tetapi selain itu hampir tidak ada
Hal-hal seperti kredensial, UID, GID, dan tabel file descriptor menambah kompleksitas berbasis state ke kernel, dan jika ada bug proses dapat menyalahgunakannya
Kesulitan pada varian workstation adalah kompleksitas ini kembali dimasukkan lagi
Misalnya, layer dasar kontainer bisa diekspos sebagai perangkat blok yang berisi filesystem immutable, tetapi volume dan folder bersama kemungkinan akan di-mount melalui 9pfs atau VirtIO-FS, yakni 9p atau FUSE di atas VirtIO
Itu memperbesar kembali permukaan serangan
Kalau beruntung, penyerang membutuhkan rantai eksploit
Saya lebih akrab dengan sisi FreeBSD, dan biasanya komponen yang menyediakan perangkat paravirtualisasi atau emulasi disandbox dengan Capsicum, sehingga penyerang harus lebih dulu mengambil alih proses host, lalu tetap harus menembus kernel untuk mengakses hal-hal yang sebelumnya tidak bisa diakses VM
Tetapi tanpa sandbox tambahan semacam ini, escape dari kontainer kembali menjadi dunia di mana ia dapat melakukan semua hal yang bisa dilakukan pengguna, dan itu tidak jauh lebih baik daripada root yang jebol di desktop
Secara pribadi saya lebih menyukai gVisor. Itu bukan runtime VMM, tetapi sudah ada selama beberapa tahun, dipakai juga oleh perusahaan seperti Tencent, dan sangat cocok dengan lingkungan saya yang sudah menjalankan semua kontainer di dalam VM Proxmox
Hal lain yang sedang saya uji adalah syd-oci, yang tampaknya agak kurang mendapat perhatian dibanding rekomendasi utama seperti MicroVM atau gVisor
Terima kasih juga untuk referensi libkrun; ini tampak seperti kemungkinan yang menjanjikan
Kemungkinannya juga besar akan mendorong audit keamanan