:(){ :|:& };:
..definisce una funzione chiamata : , che si genera da solo (due volte, uno convoglia nell'altro) e fa da sfondo a se stesso.
Con interruzioni di riga:
:()
{
:|:&
};
:
Rinominare il : funzione a forkbomb :
forkbomb()
{
forkbomb | forkbomb &
};
forkbomb
Puoi prevenire tali attacchi usando ulimit per limitare il numero di processi per utente:
$ ulimit -u 50
$ :(){ :|:& };:
-bash: fork: Resource temporarily unavailable
$
In modo più permanente, puoi usare /etc/security/limits.conf (su Debian e altri, almeno), per esempio:
* hard nproc 50
Ovviamente ciò significa che puoi eseguire solo 50 processi, potresti volerlo aumentare a seconda di cosa sta facendo la macchina!
Questo definisce una funzione chiamata : che chiama se stesso due volte (Codice:: | : ). Lo fa in background (& ). Dopo l'; la definizione della funzione è terminata e la funzione : viene avviato.
Quindi ogni istanza di :inizia due nuovi :e così via... Come un albero binario di processi...
Scritto in semplice C che è:
fork();
fork();