Katakanlah, dari kernel 2.6 dan seterusnya.
Saya menonton semua proses yang berjalan pada sistem.
Apakah PID anak-anak selalu lebih besar daripada PID orang tua mereka?
Apakah mungkin untuk memiliki kasus "inversi" khusus?
sumber
Katakanlah, dari kernel 2.6 dan seterusnya.
Saya menonton semua proses yang berjalan pada sistem.
Apakah PID anak-anak selalu lebih besar daripada PID orang tua mereka?
Apakah mungkin untuk memiliki kasus "inversi" khusus?
Tidak, untuk alasan yang sangat sederhana bahwa ada nilai numerik maksimum yang dapat dimiliki PID. Jika suatu proses memiliki PID tertinggi, tidak ada anak yang bercabang dapat memiliki PID yang lebih besar. Alternatif untuk memberi anak PID lebih rendah adalah dengan gagal total fork()
, yang tidak akan sangat produktif.
PID dialokasikan secara berurutan, dan setelah yang tertinggi digunakan, sistem membungkus untuk menggunakan kembali yang (gratis) lebih rendah, sehingga Anda bisa mendapatkan PID yang lebih rendah untuk anak dalam kasus lain juga.
PID maksimum default di sistem saya ( /proc/sys/kernel/pid_max
) hanya 32768, jadi tidak sulit untuk mencapai kondisi di mana sampulnya terjadi.
$ echo $$
27468
$ bash -c 'echo $$'
1296
$ bash -c 'echo $$'
1297
Jika sistem Anda mengalokasikan PID secara acak ( seperti yang dilakukan OpenBSD ) alih-alih secara berurutan (seperti Linux), akan ada dua opsi. Entah pilihan acak dibuat atas seluruh ruang PID yang mungkin, dalam hal ini jelas bahwa PID anak bisa lebih rendah daripada orang tua. Atau, PID anak akan dipilih secara acak dari nilai-nilai yang lebih besar dari PID induknya, yang rata-rata akan menempatkannya di tengah-tengah antara PID induk dan maksimum. Proses bercabang secara rekursif akan dengan cepat mencapai maksimum dan kita akan berada pada titik yang sama seperti yang disebutkan di atas: garpu baru perlu menggunakan PID yang lebih rendah untuk berhasil.
Juga terdapat potensi kerentanan keamanan menggunakan pemberitahuan kernel dan memalsukan diri Anda untuk menghindari deteksi dengan pemindaian tabel proses; ini jika dilakukan dengan benar menghasilkan proses Anda memiliki PID yang lebih rendah dan alat proses yang tidak melihat proses tersebut.
http://cve.circl.lu/cve/CVE-2018-1121
sumber