:(){ :|:& };:
..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();