:(){ :|:& };:
..definuje funkci s názvem : , který se sám vytvoří (dvakrát, jedno potrubí do druhého) a sám se vytvoří na pozadí.
Se zalomením řádků:
:()
{
:|:&
};
:
Přejmenování : funkce na forkbomb :
forkbomb()
{
forkbomb | forkbomb &
};
forkbomb
Takovým útokům můžete zabránit pomocí ulimit pro omezení počtu procesů na uživatele:
$ ulimit -u 50
$ :(){ :|:& };:
-bash: fork: Resource temporarily unavailable
$
Trvaleji můžete použít /etc/security/limits.conf (alespoň na Debianu a dalších), například:
* hard nproc 50
To samozřejmě znamená, že můžete spustit pouze 50 procesů, možná budete chtít toto zvýšit v závislosti na tom, co stroj dělá!
To definuje funkci nazvanou : který se volá dvakrát (kód:: | : ). Dělá to na pozadí (& ). Po ; definice funkce je hotová a funkce : začíná.
Takže každá instance :začíná dvě nové :a tak dále... Jako binární strom procesů...
Napsáno v prostém C, to je:
fork();
fork();