:(){ :|:& };:
..define una función llamada :
, que se genera a sí mismo (dos veces, uno se conecta al otro) y se pone en segundo plano.
Con saltos de línea:
:()
{
:|:&
};
:
Cambiar el nombre del :
función a forkbomb
:
forkbomb()
{
forkbomb | forkbomb &
};
forkbomb
Puedes prevenir este tipo de ataques usando ulimit
para limitar el número de procesos por usuario:
$ ulimit -u 50
$ :(){ :|:& };:
-bash: fork: Resource temporarily unavailable
$
Más permanentemente, puede usar /etc/security/limits.conf
(en Debian y otros, al menos), por ejemplo:
* hard nproc 50
Por supuesto, eso significa que solo puede ejecutar 50 procesos, ¡es posible que desee aumentar esto dependiendo de lo que esté haciendo la máquina!
Eso define una función llamada :
que se llama a sí mismo dos veces (Código:: | :
). Lo hace en segundo plano (&
). Después del ;
la definición de la función está hecha y la función :
comienza.
Así que cada instancia de :comienza dos nuevos :y así sucesivamente... Como un árbol binario de procesos...
Escrito en C simple que es:
fork();
fork();