Sebuah service dapat dimulai dengan permission filesystem biasa yang lebih luas daripada file yang dibutuhkannya saat operasi stabil. Mengubah ownership atau topologi mount bisa tidak praktis karena resource host yang sama dipakai bersama proses lain. Linux Landlock mengisi celah ini dengan memungkinkan proses menambahkan pembatasan akses yang dipaksakan kernel kepada dirinya sendiri dan, melalui inheritance, kepada proses turunannya.

Landlock adalah Linux Security Module yang dirancang untuk sandboxing. Aturannya tidak memberikan akses filesystem yang ditolak oleh DAC, ACL, capabilities, atau mekanisme keamanan lain. Landlock menambahkan lapisan otorisasi lain. Sebuah operasi hanya berhasil ketika kontrol lain yang berlaku dan kebijakan Landlock sama-sama mengizinkannya.

Komposisi tersebut membuat Landlock berguna sebagai batas confinement, sekaligus menetapkan batas utamanya: ruleset bukan pengganti model ownership dan privilege utama pada host.

Handled access set menentukan permukaan kebijakan

Ruleset filesystem mendeklarasikan hak akses pada handled_access_fs. Bit-bit ini menentukan operasi yang keputusannya akan ditangani ruleset. Hak akses berbeda antarversi ABI Landlock, sehingga software perlu memeriksa ABI yang didukung kernel aktif dan menyusun kebijakan yang kompatibel.

Perbedaan ini penting ketika program yang dibangun dengan header lebih baru berjalan pada kernel lebih lama. Hak yang dikenal program tidak otomatis dipaksakan hanya karena konstanta simboliknya tersedia saat build. Penyusunan kebijakan harus mempertimbangkan ABI kernel yang benar-benar tersedia.

Setelah sebuah hak ditangani, akses untuk hak tersebut ditolak kecuali ruleset memberikannya melalui aturan yang berlaku. Hak di luar handled set tidak dibatasi oleh ruleset tersebut. Kebijakan yang melewatkan hak relevan dapat membiarkan sebuah operasi berada di luar batas Landlock yang dimaksud meski operasi terkait lainnya sudah dibatasi.

Properti keamanan berasal dari handled set yang tepat, bukan sekadar dari keberadaan ruleset Landlock.

Aturan path-beneath mengikat otoritas ke objek filesystem

Kebijakan filesystem umumnya dinyatakan dengan LANDLOCK_RULE_PATH_BENEATH. Aturan ini merujuk parent file descriptor dan mask allowed_access. Bentuk tersebut mengaitkan tindakan yang diizinkan dengan hierarki filesystem yang dirujuk, bukan menyimpan pathname tekstual sebagai objek kebijakan.

Model berbasis objek ini tidak memperlakukan string path sebagai identitas permanen. Rename dan perilaku mount tetap memerlukan analisis kebijakan yang cermat, tetapi aturan dipasang memakai file descriptor yang diresolusikan kernel menjadi objek filesystem.

Kebijakan dapat memberikan hak berorientasi baca di bawah satu hierarki dan hak berorientasi tulis di bawah hierarki lain. Mask yang diberikan oleh sebuah aturan harus tetap berada dalam hak yang ditangani ruleset serta hak yang didukung untuk objek dan ABI terkait.

Landlock tidak menjadikan parent file descriptor sebagai capability aplikasi yang melewati pemeriksaan lain. Descriptor digunakan saat aturan dibentuk. Operasi filesystem berikutnya tetap melewati jalur otorisasi kernel yang tersusun dari beberapa kontrol.

Pembatasan diterapkan pada thread pemanggil

Setelah membuat ruleset dan menambahkan aturan, proses menerapkannya dengan landlock_restrict_self(). Untuk pemanggil tanpa privilege, setup yang didokumentasikan mencakup pengaktifan no_new_privs sebelum membatasi diri. Langkah ini mencegah transisi executable berikutnya dipakai untuk memperoleh privilege yang dapat merusak model confinement.

Pembatasan berlaku pada thread pemanggil dan diwariskan kepada child yang dibuat sesudahnya. Pada program multithread, pemasangan kebijakan karena itu perlu ditempatkan secara sengaja dalam lifecycle proses. Membatasi satu thread tidak secara retroaktif mengubah thread lain menjadi satu unit sandbox atomik.

Arsitektur yang kuat memasang confinement sebelum pekerjaan tidak tepercaya dimulai dan sebelum worker dibuat ketika seluruh worker memang harus berbagi batas yang sama. Posisi landlock_restrict_self() merupakan bagian dari desain keamanan, bukan sekadar detail inisialisasi.

Ruleset dapat memperketat otoritas tetapi tidak memulihkannya

Pembatasan Landlock tersusun sehingga lapisan tambahan dapat semakin mengurangi operasi yang diizinkan. Proses tidak dapat memakai ruleset Landlock berikutnya untuk memperoleh kembali akses yang sudah dihapus lapisan sebelumnya.

Properti monotonik ini berguna untuk aplikasi bertahap. Launcher dapat memasang batas luar yang luas, lalu worker menambahkan kebijakan lebih sempit untuk tugas tertentu. Worker tidak memerlukan otoritas untuk menulis ulang kebijakan launcher.

Properti yang sama berarti kesalahan kebijakan tidak dapat diperbaiki dari dalam proses terbatasi dengan memasang lapisan yang lebih permisif. Jika akses yang diperlukan sudah dihapus, proses harus bekerja di dalam pembatasan tersebut atau diganti oleh proses yang dibuat dengan kebijakan yang sesuai.

Landlock cocok ketika pengurangan privilege mengikuti fase aplikasi: memperoleh resource, menetapkan sandbox, lalu menjalankan kode yang seharusnya beroperasi dengan permukaan filesystem lebih kecil.

Descriptor yang sudah terbuka tetap menjadi kanal otoritas terpisah

Sandbox filesystem perlu memperhitungkan file descriptor yang dibuka sebelum confinement. Mediasi filesystem Landlock yang berorientasi pathname tidak berarti setiap operasi pada setiap descriptor yang sudah terbuka dicabut saat ruleset dipasang.

Ini merupakan persoalan desain sandbox yang lebih luas: akses yang diperoleh sebelum sebuah batas diterapkan dapat bertahan dalam objek kernel yang sudah dimiliki proses. File terbuka, socket, memory mapping, dan handle lain perlu ditangani lifecycle-nya secara eksplisit sesuai jaminan mekanisme yang mengaturnya.

Service yang membuka file sensitif lalu memasang kebijakan Landlock yang mengecualikan pathname file tersebut tidak boleh menganggap descriptor sebelumnya otomatis menjadi tidak berbahaya. Inheritance descriptor dan resource yang dibuka lebih awal harus diaudit secara terpisah.

Batas praktis merupakan gabungan kebijakan Landlock dan otoritas yang sudah berada di dalam proses saat confinement diterapkan.

Topologi filesystem tetap memengaruhi arti kebijakan

Aturan path-beneath dievaluasi terhadap objek filesystem kernel, tetapi topologi deployment tetap penting. Bind mount, mount terpisah, direktori yang dibuat saat runtime, dan perubahan filesystem dapat mengubah objek yang dapat dicapai melalui path aplikasi.

Kebijakan sebaiknya diturunkan dari tampilan filesystem yang terlihat oleh proses terbatasi. Jika mount namespace juga dipakai, urutan penyusunan namespace dan penerapan Landlock memengaruhi lingkungan akhir. Landlock tidak membuat mount namespace atau menyembunyikan entri direktori dengan sendirinya.

Hal ini memisahkan dua properti yang kerap dicampuradukkan. Mekanisme namespace membentuk pohon filesystem yang dapat dilihat proses; Landlock membatasi tindakan tertentu terhadap objek di lingkungan tersebut. Keduanya dapat digabungkan untuk menghasilkan sandbox lebih ketat, tetapi masing-masing tetap memiliki semantik enforcement sendiri.

Negosiasi ABI merupakan bagian dari kontrak keamanan

Landlock berkembang melalui versi ABI yang menambahkan hak akses dan fitur. Software portabel perlu memeriksa ABI yang didukung dan memetakan kebijakan yang dimaksud ke kemampuan yang tersedia pada kernel tersebut.

Perilaku fallback harus eksplisit. Jika hak yang dibutuhkan tidak tersedia, menghapusnya secara diam-diam dapat menghasilkan batas yang lebih lemah daripada asumsi aplikasi. Bergantung pada threat model, respons yang lebih aman dapat berupa menolak startup, memilih mode fitur terbatas secara sengaja, atau memakai mekanisme confinement lain.

Ini bukan sekadar persoalan kompatibilitas. Kebijakan yang diharapkan kode aplikasi dan kebijakan yang dipaksakan kernel aktif harus cukup selaras agar batas keamanan yang dinyatakan tetap valid.

Landlock paling kuat ketika diperlakukan sebagai pengurangan otoritas yang presisi: aplikasi menentukan tindakan filesystem yang relevan, memverifikasi dukungan kernel, memasang aturan berbasis objek, membuang handle lama yang tidak diperlukan, lalu memasuki fase terbatasi. Kernel kemudian memaksakan batas tambahan tersebut bersama kontrol akses sistem lainnya.