kern.randompid: Random PID modulus

Dan Lukes dan at obluda.cz
Thu Oct 6 16:56:31 CEST 2016


On 6.10.2016 14:20, Miroslav Lachman wrote:
> Chtel jsem se jen tak zeptat, jestli nekdo pouzivate nastaveni kern.randompid=1,

S jednickou si moc nepomuzes, to je jak nula.

Zkus si to - ten sysctl ti po pokusu dat tam jednicku rekne, ze 0 -> 0

Zcela presne:
0,1             -> 0
2..99           -> 100
 > pid_max - 100 -> pid_max - 100

Rekneme, zes tam dal neco v rozsahu 100..pid_max - 100

V takovem pripade neni kandidat na budouci pid
lastpid+1
ale
arc4random() % randompid

Takto ziskana hodnota projde jeste nejakymi kontrolami a upravami, ale 
to uz pro ucely tehle debaty neni zajimave.

Jo, a behem bootu to funguje mirne jinak jak zminim nize.

> aby se PID pro procesy negenerovaly sekvencne, ale
> nahodne a pripadne jestli to ma nejake (treba vykonnostni) nevyhody,

arc4random() samozrejme je vypocetne narocnejsi nez (lastpid+1)
Jiny slovy "trva dele", coz ti muze vadit zejmena pokud ti hodne zalezi 
na co nejrychlejsi odezve.

> Uz davno jsem si vsimnul, ze ty procesy, co se spousteji hned pro bootu,
> maji velmi podobne, nebo uplne stejne PID porad dokola

Behem bootu (presneji receno, pri startu konkretnich vybranych 
"prvotnich" procesu) se arc4random() nepouziva nikdy (a navic se za 
"rezervovane" povazuji pouze pid 0..9 nikoliv 0..99 jako pri beznem 
provozu).

> a podle jistych teorii to muze utocnikum usnadnovat trochu cestu, i kdyz asi ne moc  vyzname.

Zalezi jak moc vyznavas teorii, ze kazda informace muze za urcitych 
okolnosti utocnikovi pomoci ;-)

Urcite dokazu vymyslet takovou chybu systemu, k jejimuz vyuziti budu 
potrebovat znat PID konkretniho procesu, nebudu ho ale schopen zjistit.

Jo - a nebude se mi z nejakeho duvodu hodit zrovna 'init', jehoz pid je 
1 zcela bez vyjimky.

Klicova otazka je, jak moc se takove chyby bojis.

> Ma tedy ta randomizace nejaky smysl, nebo je to zbytecne?

Ano ;-)

Dan




More information about the Users-l mailing list