Langsung ke konten

Arsip

Isolasi Proses

8 artikel
Keamanan Siber 18 Sep 2026 6 min read

Referensi Proses Pidfd Memisahkan Identitas dari PID Numerik

Sebuah supervisor mencatat PID worker, menjalankan pekerjaan lain, lalu mengirim sinyal ke nomor tersebut. Jika worker awal sudah berhenti dan kernel menggunakan kembali PID-nya, operasi berikutnya dapat mengenai proses yang berbeda. Nomor itu mengidentifikasi entri dalam PID namespace pada suatu saat; nomor tersebut bukan handle proses yang tahan lama. Pidfd Linux menambahkan representasi identitas proses dalam bentuk file descriptor. Pidfd yang diperoleh untuk sebuah proses tetap merujuk ke proses tersebut dan tidak dialihkan ketika PID numeriknya didaur ulang. Mekanisme ini mengubah batas identitas untuk supervisi, tetapi tidak memberikan kewenangan luas atas proses yang dirujuk.

Keamanan Siber 18 Sep 2026 5 min read

process_vm_readv Melintasi Memori Proses di Balik Pemeriksaan Akses ptrace

Agen diagnostik mungkin memerlukan byte dari proses lain tanpa menghentikan proses tersebut atau melakukan attach seperti debugger tradisional. Linux process_vm_readv() menyediakan jalur data itu: pemanggil memberikan buffer lokal dan rentang alamat pada proses target, lalu kernel mentransfer byte di antara kedua address space. Interface ini kuat karena target tidak secara eksplisit mengirimkan data. Batas keamanannya karena itu berada di luar protokol aplikasi milik target. Linux membatasi operasi dengan pemeriksaan access mode ptrace, sementara transfer memori tetap bergantung pada layout virtual memory target yang dapat berubah.

Keamanan Siber 18 Sep 2026 5 min read

PR_SET_DUMPABLE Mengubah Batas Inspeksi Proses Linux

Sebuah service menerima credential ke dalam memori proses, menurunkan privilege, lalu terus berjalan dengan account biasa. Proses lain dengan account yang sama masih mungkin dapat menginspeksinya melalui interface yang ditujukan untuk debugging. Linux menempatkan atribut proses tambahan, yang umum disebut dumpable, ke dalam beberapa keputusan akses tersebut. prctl(PR_SET_DUMPABLE, 0) menandai calling process sebagai non-dumpable. Dampaknya lebih luas daripada sekadar meniadakan core file: Linux juga memasukkan status dumpable ke pemeriksaan akses ptrace dan mengubah perilaku ownership file di bawah /proc/<pid>. Dampak tersebut membentuk batas yang saling terkait, tetapi bukan satu larangan universal terhadap observasi proses.

Keamanan Siber 18 Sep 2026 5 min read

pidfd Mengikat Operasi Proses ke Referensi Kernel yang Stabil

Sebuah supervisor mencatat PID 4127, mengerjakan aktivitas lain, lalu mengirim sinyal ke 4127. Di antara kedua langkah itu, proses awal dapat berhenti dan kernel pada akhirnya dapat memberikan PID numerik yang sama kepada proses lain. Angka tersebut tetap menunjuk suatu proses, tetapi belum tentu proses yang semula hendak dipengaruhi supervisor. PID file descriptor Linux, yang umum disebut pidfd, memindahkan batas tersebut dari pencarian ulang angka menjadi file descriptor yang merujuk task tertentu. Perubahan ini sempit tetapi relevan bagi keamanan: operasi yang menerima pidfd dapat tetap terikat pada task yang dipilih saat referensi diperoleh, alih-alih kembali mencari angka yang dapat digunakan ulang.

Keamanan Siber 18 Sep 2026 5 min read

Notifikasi Pengguna Seccomp Mendelegasikan Eksekusi Syscall Melintasi Batas Privilege

Sebuah proses terisolasi dapat mencapai syscall yang akan ditolak kernel berdasarkan kredensialnya saat ini, sementara supervisor terpisah memiliki privilege yang cukup untuk menjalankan operasi ekuivalen secara aman atas nama proses tersebut. Notifikasi pengguna seccomp Linux membentuk kanal mediasi untuk susunan ini: filter dapat menghentikan thread pemanggil, mengirim notifikasi ke listener, lalu menunggu respons dari userspace. Mekanisme ini lebih spesifik daripada memperlakukan supervisor sebagai proxy syscall umum. Notifikasi membawa data syscall pada tingkat register dan identifier yang terikat pada permintaan yang masih tertunda. Supervisor dapat membentuk nilai balik, menyuntikkan file descriptor, atau pada kondisi tertentu meminta kernel melanjutkan syscall asli. Setiap pilihan menempatkan batas kepercayaan pada lokasi yang berbeda.

Keamanan Siber 18 Sep 2026 5 min read

close_range Mempersempit Pewarisan File Descriptor Sebelum exec

Sebuah proses layanan dapat mengumpulkan socket, pipe, handle direktori, file log, dan descriptor kontrol jauh sebelum menjalankan helper. Jika descriptor tersebut tetap terbuka pada program baru, helper menerima kapabilitas yang tidak tampak dari argumen command line maupun environment. Socket yang sudah terhubung dapat membawa akses terautentikasi; direktori yang terbuka dapat mempertahankan akses ke lokasi filesystem; pipe dapat membuka jalur data komponen lain. Linux close_range() memberi kode sebelum exec operasi berbasis rentang atas file descriptor. Nilai keamanannya bukan karena descriptor menjadi tidak berbahaya. Mekanisme ini memungkinkan proses mempersempit kumpulan descriptor yang melewati batas execve() tanpa menginventarisasi /proc/self/fd atau memanggil close() satu per satu untuk setiap descriptor kandidat.

Keamanan Siber 17 Sep 2026 5 min read

Close-on-Exec Menjadikan Pewarisan Descriptor sebagai Batas Eksplisit

Sebuah service membuka socket berprivilege, menjalankan program helper, dan mengharapkan helper hanya menerima standard input, output, serta error. Satu descriptor yang dibuat tanpa close-on-exec dapat melanggar batas tersebut secara diam-diam. Jika descriptor masih ada saat image program baru dipasang, helper mewarisi akses ke objek kernel meski credentials miliknya sendiri tidak akan dapat membuka objek itu. Linux memperlakukan kondisi ini sebagai pewarisan descriptor, bukan peristiwa otorisasi baru. Keputusan keamanan ketika objek dibuka sudah melekat pada descriptor. FD_CLOEXEC mengatur apakah otoritas yang sudah terbentuk itu melintasi execve() yang berhasil.

Keamanan Siber 17 Sep 2026 5 min read

close_range dengan UNSHARE Memisahkan Tabel Descriptor Sebelum Penutupan Massal

Proses Linux multithread dapat mencapai batas yang rumit tepat sebelum execve(): satu thread hendak membuang setiap file descriptor di atas standard input, output, dan error, sementara thread lain masih dapat membuat descriptor pada tabel yang sama. Loop pemanggilan close() menangani nomor descriptor satu per satu, tetapi tidak dengan sendirinya mengubah fakta bahwa tabel tersebut dibagi. close_range() dengan CLOSE_RANGE_UNSHARE menangani race spesifik itu. Kernel terlebih dahulu memberi caller tabel file descriptor yang tidak lagi dibagi dengan pengguna lain dari tabel lama, lalu menerapkan penutupan massal yang diminta pada tabel milik caller. Properti keamanannya berkaitan dengan kepemilikan tabel selama pembersihan, bukan sekadar pengurangan jumlah system call.