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