• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

:(){ :|:& };: Forkbombe - wie unterbinden? [solved]

dma67

Hacker
Hallo,
zufällig habe ich in einem Forum entdeckt, das mit
Code:
:(){ :|:& };:
das System lahmzulegen ist - und das als User.
Man kann sich ein Skript vorstellen, wo so etwas untergemoggelt wird.

Ich habe es bei mir ausprobiert - und nur ein Neustart half.
Im Privatgebrauch tut man sich das nicht an.
Aber man kann sich vorstellen, was das anrichten kann, wenn einige User im produktiven Einsatz mit so was herumspielen.

Kann man irgendwie vorbeugen?
Googlesuche zu dem Befehl ergab nichts.

EDIT
Ich habe das in einem polnischen Forum gefunden.
IDG ist so ein Sprachrohr von M$ (gesponsort oder sonst wie abhängig). Da erzählen sie manchmal, wie S***e Linux ist.
Ich lese das mal ab und zu.
http://bezpieczenstwo.idg.pl/news/118239.html
Na ja, viele von Euch werden es nicht verstehen, aber da gibts noch ein Screen von Kubuntu. Diese Distri scheint das überstanden zu haben.
http://g1.idg.pl/news/3/7/37963

EDIT2
Mittlerweile habe ich mich etwas eingelesen.
Offensichtlich muss man /etc/sercurity/limits.conf anpassen.
Zum Thema Forkbombe
http://blog.pimpmyshell.de/2007/07/02/die-fork-bomb-und-die-limitsconf/
http://www.linux-hamburg.de/limits.html
http://www.linuxforen.de/forums/archive/index.php/t-176863.html

EDIT3
Problem gelöst :)
in
Code:
kate /etc/sercurity/limits.conf

Folgendes hinzufügen
Code:
@users        soft    nproc           128
@users        hard    nproc           50
Somit werden die Ressourcen per User eingeschränkt und die Endlosschleife wird unterbunden.

EDIT4
Ich habe die Parameter etwas erhöht, da das System für einen User doch zu wenig Ressourcen zur Verfügung stellte.
Nun ist mit
Code:
@users        soft    nproc           300
@users        hard    nproc           500
alles perfekt, die Fork-Bobmbe wird trotzdem entschärft.
Noch ein Link dazu
https://systemausfall.org/wikis/howto/ForkBombs
 

trustkill

Hacker
Sitze leider gerade an einer Windows Maschine und kann das von Dir gepostete leider nicht ausprobieren. Doch würde es mich ernsthaft verwundern, wenn man als User unter Eingabe dieser kryptischen Zeichen den Rechner zum Stillstand bringen könnte.
 

Leviathan

Hacker
habs probiert ^^

**Klonk:*

Wed Aug 08, 11:58:29 : /root
root@ftp # :(){ :|:& };:
[1] 6140
[1]+ Done : | :

Wed Aug 08, 11:58:31 : /root
root@ftp # ps auxf

w
 

Leviathan

Hacker
Guckt so aus als würde er in eine Endlosschleife laufen.

Man kann mit Ulimit vlt. die Anzahl der Prozesse fuer einen User limiteren.

Gruß Dominik
 
A

Anonymous

Gast
trustkill schrieb:
Doch würde es mich ernsthaft verwundern, wenn man als User unter Eingabe dieser kryptischen Zeichen den Rechner zum Stillstand bringen könnte.

Das sind natürlich nicht irgendwelche kryptischen Zeichen sondern Scriptprogrammierung.

Funktionsdefinition
Code:
:()
# es wird eine Funktion mit Namen ":" definiert ; dabei wird boshafter Weise gleich auch noch die eingebaute Shellfunktion ":" (Leerfunktion) überschreiben.

Funktionbeschreibung
Code:
{ :|: }
# beim ausführen dieser Funktion soll sich die Funktion dann gleich 2 Mal selbst aufrufen (2*Rekursion)
boshaft ist das & hinter :|: damit wird der doppelt rekursive Aufruf auch noch in den Hintergrund geschickt.

; ist nur ein Befehlstrenner


das letzte Zeichen ist dann der Funktionsaufruf
: # damit wird dann das ganze gestartet.


Ergebniss: der Rechner erzeugt mittels Fork soviele Bash-Instanzen bis der Speicher voll ist. Eine einfach aber typisch Forkbombe. http://www.gaos.org/moin/ForkBombe

Wem dieser Befehl trotz dieser Warung hier passiert ;) , erstmal Ruhe bewahren, es dauert je nachdem wieviel Speicher und Swap ihr im Rechner habt eine ganze Weile eventuell Jahre ;) . Ist der verfügbare Speicher verbraucht werden Fehler produziert und damit die Rekursion an diesem Ast abgebrochen und dieser Prozessast beginnt zu "verfäulen" und fällt in sich zusammen. Allerdings wird dadurch wieder Speicher frei für neue erfolgreiche Forks. Theoretisch wird der sterbende Bereich irgendwann gewinnen und die Forkbombe bricht zusammen und beendet sich. Nach und nach stoßen viele Rekursions-Äste an das Speicherende. Von Unten arbeiten sich SIGHUP Signale nach oben in die Verzewiegungen. Ist relativ wenig Speicher und wenig Swap im System könnte man noch darauf warten. Ist viel Speicher und viel Swap im System lohnt es sich nicht, die vielen tausend Einzelprozesse kommen jeweils nur selten an eine CPU und dadurch läuft alles extrem langsam. Das Swapping kommt dabei extrem erschwerend dazu. Während der Ausführung der Forkbombe ist der Rechner überhaupt nicht mehr ansprechbar, reagiert auf nichts mehr und ist scheinbar tot. Rechner mit wenig Speicher und Swap müssen nicht zwangsläufig ausgeschalten und neu gestartet werden, geduldig warten und nach "?????" Zeit fällt alles wieder in sich zusammen und der Rechner arbeitet normal weiter. Dabei gibt es beim Abwarten und aussitzen zumindestens dann keine verlorenen ungespeicherte Daten und keine defekten Filesysteme.
Wieviel Speicher und Swap man aussitzen kann ? und ob das in allen möglichen Speichermodellen innerhalb der CPU Konfiguration des Kernels wirklich zusammenfällt ? kann wohl niemand so einfach austesten.

robi
 
Oben