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.

Status dumpable adalah atribut proses, bukan switch core file

PR_SET_DUMPABLE menerima SUID_DUMP_DISABLE atau SUID_DUMP_USER, yang direpresentasikan oleh 0 dan 1. Nilai 0 membuat proses non-dumpable; nilai 1 membuatnya dumpable berdasarkan aturan biasa.

Pembuatan core tetap bergantung pada kondisi lain. Resource limit, kondisi filesystem, konfigurasi kernel, disposisi signal, dan kebijakan core dump sistem dapat memengaruhi apakah dump dihasilkan. Menetapkan dumpable ke 1 karena itu tidak menjamin core file akan muncul, sedangkan menetapkannya ke 0 memiliki konsekuensi keamanan di luar pembuatan core.

Perbedaan ini penting pada service berumur panjang. Menganggap flag tersebut hanya sebagai konfigurasi output crash mengabaikan keputusan kontrol akses yang memakai status yang sama.

Transisi credential dapat mereset atribut

Linux biasanya memulai proses dengan status dumpable 1. Transisi credential tertentu mereset atribut ke nilai yang dikonfigurasi oleh /proc/sys/fs/suid_dumpable, dengan nilai default konvensional 0.

Kasus reset yang terdokumentasi mencakup perubahan effective user atau group ID, perubahan filesystem user atau group ID, eksekusi program set-user-ID atau set-group-ID yang mengubah effective credential, serta eksekusi program dengan file capability ketika permitted capability set bertambah.

Reset otomatis ini melindungi transisi privilege agar tidak mempertahankan postur inspeksi yang sesuai sebelum transisi. Konsekuensinya, kode aplikasi tidak dapat mengasumsikan nilai yang ditetapkan sebelumnya tetap sama melewati setiap operasi credential.

Service yang sengaja menetapkan kebijakan dumpable final harus menempatkan operasi tersebut secara tepat terhadap perubahan credential. Kebijakan ini bersifat stateful, dan transisi berikutnya dapat mengubahnya.

Ptrace tetap menjalankan keputusan otorisasi berlapis

Proses non-dumpable tidak dapat di-attach dengan PTRACE_ATTACH biasa hanya karena tracer memiliki user ID yang sama. Status dumpable berpartisipasi dalam pemeriksaan akses ptrace Linux, sehingga mengurangi jalur inspeksi yang dalam kondisi lain dapat dimiliki proses dengan account yang sama.

Hal ini tidak menjadikan PR_SET_DUMPABLE sebagai kebijakan ptrace yang lengkap. Pemeriksaan capability, perbandingan credential, user namespace, dan Linux Security Module juga dapat memengaruhi otorisasi ptrace. LSM Yama dapat menerapkan pembatasan relasi atau administratif tambahan melalui kebijakannya sendiri.

Batas yang dihasilkan bersifat aditif. Status non-dumpable menutup jalur attachment biasa; status tersebut tidak menggantikan setiap jalur akses privileged atau setiap keputusan LSM.

Kondisi ini sangat relevan pada host tempat beberapa service berbagi satu Unix account. UID yang sama tidak otomatis setara dengan authority debugging tanpa batas ketika status dumpable dan kontrol ptrace lain ikut diperhitungkan.

Ownership procfs memperlihatkan status yang sama pada interface lain

File di bawah /proc/<pid> biasanya dimiliki oleh effective user dan group proses. Ketika dumpable bukan 1, Linux mengubah ownership tersebut ke identitas root yang berlaku sesuai semantik procfs.

Perilaku ini mengurangi kegunaan ownership biasa sebagai jalur menuju entry procfs per-proses yang sensitif setelah proses menjadi non-dumpable. Akses ke file procfs individual tetap dapat memiliki pemeriksaan permission tambahan, mount option, efek namespace, dan access mode bergaya ptrace.

Transisi ownership tersebut karena itu tidak setara dengan menyembunyikan /proc/<pid>. Direktori dapat tetap terlihat, dan procfs mengekspos banyak file dengan aturan akses berbeda. Klaim keamanannya harus tetap sempit: status dumpable mengubah ownership dan berpartisipasi dalam pemeriksaan akses; status ini tidak membuat proses menghilang dari procfs.

User namespace juga memengaruhi identitas root yang memiliki entry tersebut. Kernel modern memperhitungkan identitas root yang dipetakan pada noninitial user namespace, bukan memperlakukan setiap kasus sebagai UID 0 pada initial namespace.

Reset berikutnya ke 1 membuka kembali sebagian permukaan inspeksi

Sebuah proses dapat memanggil PR_SET_DUMPABLE lagi dengan SUID_DUMP_USER. Operasi tersebut mengembalikannya ke status dumpable 1 dan memulihkan perilaku ownership procfs terkait ke effective credential miliknya.

Transisi itu dapat berguna secara operasional untuk debugging terkontrol, tetapi tetap merupakan perubahan kebijakan. Software yang mengaktifkan dumpability sementara sebaiknya memperlakukan interval tersebut sebagai perubahan trust boundary, bukan toggle diagnostik tanpa konsekuensi.

Kehati-hatian yang sama berlaku pada pengumpulan crash. Mengaktifkan dumpability untuk memperoleh status diagnostik dapat membuat inspeksi memori tersedia melalui channel selain artefak core yang akhirnya dibuat, bergantung pada kebijakan ptrace dan LSM di sekitarnya.

Desain yang kuat karena itu memisahkan keputusan untuk menyimpan material diagnostik dari keputusan untuk mengizinkan inspeksi proses secara live. PR_SET_DUMPABLE memengaruhi keduanya dan tidak dapat mengekspresikan kedua kebijakan tersebut secara independen.

Kerahasiaan memori memerlukan kontrol di luar status dumpable

Status non-dumpable tidak mengenkripsi memori, menghapus secret, mencegah proses mengirim data secara sukarela, atau membatasi aktor dengan privilege memadai yang lolos pemeriksaan kernel terkait. Status ini juga tidak menggantikan pembatasan pada inherited descriptor, endpoint IPC, log, atau interface diagnostik tingkat aplikasi.

Core dump juga memiliki kontrol scope tersendiri. Linux menyediakan mekanisme seperti MADV_DONTDUMP dan /proc/<pid>/coredump_filter untuk menentukan mapping yang ikut dalam dump ketika dumping diizinkan. Mekanisme tersebut mengatur isi dump, bukan batas inspeksi yang lebih luas yang dipengaruhi status dumpable.

Konsekuensi arsitekturalnya berupa asimetri yang berguna: satu bit status proses memengaruhi beberapa permukaan yang berorientasi debugging, tetapi setiap permukaan mempertahankan kebijakan independen di sekitarnya. Menetapkan PR_SET_DUMPABLE ke 0 dapat mempersempit attachment ptrace, pembuatan core, dan exposure ownership procfs sekaligus, tetapi desain keamanan tetap harus memperhitungkan tracer privileged, kebijakan namespace, pembatasan LSM, dan setiap channel terpisah yang dapat membawa data proses keluar dari address space.