:(){ :|:& };:
..définit une fonction nommée :
, qui se génère (deux fois, l'un dans l'autre) et s'arrière-plan lui-même.
Avec sauts de ligne :
:()
{
:|:&
};
:
Renommer le :
fonction à forkbomb
:
forkbomb()
{
forkbomb | forkbomb &
};
forkbomb
Vous pouvez empêcher de telles attaques en utilisant ulimit
pour limiter le nombre de processus par utilisateur :
$ ulimit -u 50
$ :(){ :|:& };:
-bash: fork: Resource temporarily unavailable
$
De manière plus permanente, vous pouvez utiliser /etc/security/limits.conf
(sur Debian et autres, au moins), par exemple :
* hard nproc 50
Bien sûr, cela signifie que vous ne pouvez exécuter que 50 processus, vous pouvez augmenter ce nombre en fonction de ce que fait la machine !
Cela définit une fonction appelée :
qui s'appelle deux fois (Code :: | :
). Il le fait en arrière-plan (&
). Après le ;
la définition de la fonction est faite et la fonction :
commence.
Ainsi, chaque instance de :démarre deux nouveaux :et ainsi de suite... Comme un arbre binaire de processus...
Écrit en C clair, c'est-à-dire :
fork();
fork();