Yanıtlar:
Hayır, çok basit bir nedenden dolayı PID'nin sahip olabileceği maksimum sayısal değer var. Bir işlem en yüksek PID'ye sahipse, çatallardan hiçbir çocuk daha büyük bir PID'ye sahip olamaz. Çocuğa daha düşük bir PID vermenin alternatifi;fork()
tamamen , ki bu da çok verimli olmazdı.
PID'ler sırayla tahsis edilir ve en yüksek olanı kullandıktan sonra, sistem (ücretsiz) düşük olanları tekrar kullanmak üzere etrafa sarılır, böylece başka durumlarda bir çocuk için daha düşük PID'ler alabilirsiniz.
Sistemimdeki ( /proc/sys/kernel/pid_max
) varsayılan maksimum PID ( 32768) olduğundan, paketlemenin gerçekleştiği duruma ulaşmak zor değil.
$ echo $$
27468
$ bash -c 'echo $$'
1296
$ bash -c 'echo $$'
1297
Sisteminiz PID'leri art arda (Linux gibi) yerine rasgele ( OpenBSD gibi görünüyor ) tahsis etse iki seçenek olacaktır. Her iki rastgele seçim olası PID'lerin tüm alanı boyunca yapıldı, bu durumda bir çocuğun PID'sinin ebeveyninkinden daha düşük olabileceği açıktı. Veya, çocuğun PID'si, ebeveynin PID'sinden daha büyük değerlerden rasgele seçilecektir; bu, ortalama olarak ebeveynin PID'i ile maksimumunun arasına koyar. Ardışık olarak çakma işlemleri hızlı bir şekilde maksimuma ulaşır ve yukarıda belirtilenle aynı noktada oluruz: başarılı olmak için yeni bir çatalın daha düşük bir PID kullanması gerekir.
Ayrıca, çekirdek bildirimlerini kullanarak ve bir işlem tablosu taraması tarafından algılanmasını önlemek için kendinizi belirten güvenlik açıkları potansiyeli vardır; Bu doğru yapılırsa işleminizde PID'nin düşük olması ve söz konusu süreci görmeyen işlem araçlarının kullanılması ile sonuçlanır.
http://cve.circl.lu/cve/CVE-2018-1121
ilerletilir, ilerletilir, yarış koşullarında saklanan bir sürece karşı savunmasızdır. Çekirdeğin proc_pid_readdir () artan sayısal sırayla PID girişlerini döndürdüğünden, yüksek bir PID'yi içeren bir işlem, işlem listesinin ne zaman tarandığını belirlemek için inotify olaylarını ve daha düşük bir PID elde etmek için çatal / exec'i kullanabilir, böylece sayımdan kaçınır. Ayrıcalıklı olmayan bir saldırgan okuma / proc / PID girişlerinde bir yarış koşulunu kullanarak, işlemlerin faydalarından bir işlemi gizleyebilir. Bu güvenlik açığı aksesuarı etkiler ve 3.3.15 sürümüne kadar olan ilerlemeleri, daha yeni sürümler de etkilenebilir.