Fork bomba

Z Wikipedie, otevřené encyklopedie
Principem fork bomby je neustávající dělení procesů

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