Aufgegabelt

Fleißig forkende (sich verzweigende) Programme sind ganz nett, wenn es um das Aufrufen von Unterprozessen zur parallelen Verarbeitung oder zum Ausnutzen eines Mehrkern-/Mehrprozessor-Systems geht, aber man kann sich und andere auch gewaltig damit ins Knie schießen.

Nette Effekte erzielt man dabei immer wieder mit der klassischen Fork Bomb, die problemlos mit den unterschiedlichsten Sprachen zu realisieren ist. Die beiden untenstehenden Varianten können auch direkt an der Kommandozeile eingegeben werden, was die Gefährlichkeit für das System jedoch keinesfalls herabsetzt. Daher sind die folgenden Skripte mit Vorsicht zu behandeln:

  • bash
    :(){ :|:& };:
  • perl
    perl -e 'fork while 1'

Im Prinzip erfüllen beide Programme keinen vernünftigen Zweck, außer von sich selbst einen Fork zu bilden und dann wieder zu starten. Auf diesem Wege verzweigen sie sich immer weiter, bis das System aufgrund der vielen Prozesse einfach zusammenbricht. Die Fork Bomb stellt einen einfachen aber effektiven Denial-of-Service dar, dem man im Prinzip nur durch eine Beschränkung der Anzahl der Prozesse pro Anwender in der /etc/security/limits.conf Herr wird. Zum Beispiel:

@users soft nproc 300
@users hard nproc 400

Wurde ohne vorherige Sicherheitsmaßnahme eine Fork Bomb gestartet, ist Hopfen und Malz verloren. Das System friert ein und reagiert nicht mehr.

Noch zwei Hinweise in diesem Zusammenhang:

  1. Man sollte nicht jeden Codeschnipsel, den man geschickt bekommt, in die Kommandozeile kopieren und ausführen wenn man ihn nicht versteht.
  2. Tut man es dennoch, sollte man das wenigstens an einem lokalen System tun, nicht auf einem Server, der sich nur über die Secure Shell neu starten lässt

Und nein, diese Erfahrung habe nicht ich gemacht!

Inhalt abgleichen