Fork bomba
Fork bomba je jedna z lokálních podob útoku typu odmítnutí služby. Jejím principem je zneužití běžného systémového volání fork, které slouží k spouštění dalšího procesu.
Protože systém má jen omezené množství prostředků, může v něm běžet jen omezené množství procesů. V rámci fork bomby je ovšem spuštěno rychlé a neomezené množení procesů. To má za následek jednak postupné zpomalování počítače, kterému dochází volná paměť i procesorový čas, jednak posléze povede k tomu, že některý ze zdrojů dojde. Následkem toho nelze pouštět další procesy a to obvykle znamená, že ani nelze pustit proces (například kill), který by fork bombu ukončil. Jediným řešením, jak obnovit normální chod, tak bývá nové nabootování.
Obrana
[editovat | editovat zdroj]Jedním způsobem ochrany před fork bombou je limitovat počet procesů jednoho uživatele. Například v UN*Xových standardních příkazových interpretech je příkaz ulimit, který umožňuje nastavit maximální počet procesů.
Příklady
[editovat | editovat zdroj]Bash
[editovat | editovat zdroj]Jedním z nejznámějších příkladů fork bomby je následující třináctiznakový příkaz pro bash:
:(){ :|:& };:
Ten je možné rozepsat:i
:() # bude následovat definice funkce „:“
{ # začátek definice
: # spusť funkci :
| # a její výstup pošli
: # další instanci funkce :
& # to vše na pozadí, takže konec nadřízené funkce neovlivní běh jejích dětí
} # konec definice funkce :
; # Po definici následuje …
: # … spuštění funkce :
Dávkový soubor ve Windows
[editovat | editovat zdroj]Fork bomba je též možná vytvořit užitím dávkového souboru ve Windows. Jeho příkaz je:
%0|%0
Tento příkaz rekurentně spouští sám sebe (%0 označuje jméno spuštěného souboru) a zahlcuje paměť systému novými procesy, dokud nedojde k pádu systému.
Perl
[editovat | editovat zdroj]V Perlu je vytvoření fork bomby také snadné
fork while fork