Das letzte Thema des vergangenen Jahres war Krieg, daher fangen wir dieses Jahr mit einer Bombe an: Eine Fork-Bombe.
Das Prinzip funktioniert so: Man öffnet auf einem System so viele Prozesse wie möglich, bis der Rechner nicht mehr in der Lage ist, mehr Prozesse zu öffnen. Das Ergebnis ist, dass die Maschine danach faktisch tot ist.
Klar, das will man nicht machen, ist auch nur ein witziges Beispiel, wie leicht eine solche Fork-Bombe in der Linux Shell zu basteln ist.
Und so geht’s: In der Bash lassen sich Funktionen durch name(){ code; } definieren und später mit Ihrem Namen aufrufen:
list(){ ls -Alh; } list
Ruft man nun in der Funktion die Funktion selbst 2x auf, so ergibt dies wenige Millisekunden nach dem Start der Funktion sehr viele Prozesse – ein Standard-Linux bleibt in diesem Fall nahezu stehen:
list(){ list|list; } list
Noch gemeiner wird es, wenn man die Funktion nicht ‚list‘ nennt, sondern einfach nur Unterstrich (_) und den Aufruf mit einem Strichpunkt trennt, so dass es nur eine Zeile ergibt:
_(){ _|_; }; _
Unscheinbar, aber kann bei korrekter Eingabe (Leerzeichen beachten!) echt Probleme bringen. Also nicht starten, wenn der Rechner gerade noch benötigt wird :)
Was ich übrigend auch witzig finde:
( echo -ne "x42x5ax68x39x31x41x59x26x53x59x1bx24x1dxf7x00x00" echo -ne "xc2xffxf7xf6x71x80x80x53x20x60x60x7fx42x58x30xa0" echo -ne "x40x10x04x40x71x60x80x41x20x40x64x00x00x94x00x01" echo -ne "x00x20x00x90x30x00x00x00x03x41xa0x0dx00xd0x08xaa" echo -ne "x44xc4x69x89xa3x68x8dx19x34xc4x31x36xa6x9ex27x90" echo -ne "x52x90x19x00x7bx31x00xc2x1ex6ax95x2ax59x82xb9x00" echo -ne "x72xaax56xa9xc1x52x79x7cx80x61x52xa5xe0x19x7bx80" echo -ne "x76x54xa9xf5xfdx15x4dxc0x3exbcx55x36x4fx44xcax99" echo -ne "x3axaax71x8fx00x1ax15x39x80xc9x37xdaxa4x3ax75x9a" echo -ne "x89xd5x3ax2ax5bx4fxbcx55x21x64xaax9ex0ax91x8axa6" echo -ne "x00x1axbbx71x5axa9x5axa5x96xffx8bxb9x22x9cx28x48" echo -ne "x0dx92x0exfbx80" ) | bunzip | bunzip > outfile
Macht nichts schlimmes, legt nur ein outfile an – aber was für eins :-)