Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

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

Alles rund um die Systemverwaltung, die Administration und Konfiguration Eures Linuxsystems

Moderator: Moderatoren

Antworten
Benutzeravatar
dma67
Hacker
Hacker
Beiträge: 411
Registriert: 27. Jan 2005, 04:11

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

Beitrag von dma67 » 8. Aug 2007, 11:47

Hallo,
zufällig habe ich in einem Forum entdeckt, das mit

Code: Alles auswählen

:(){ :|:& };:
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/d ... imitsconf/
http://www.linux-hamburg.de/limits.html
http://www.linuxforen.de/forums/archive ... 76863.html

EDIT3
Problem gelöst :-)
in

Code: Alles auswählen

kate /etc/sercurity/limits.conf
Folgendes hinzufügen

Code: Alles auswählen

@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: Alles auswählen

@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
Zuletzt geändert von dma67 am 9. Aug 2007, 09:26, insgesamt 9-mal geändert.
Gruß

Darius

Werbung:
trustkill
Hacker
Hacker
Beiträge: 300
Registriert: 21. Jul 2006, 11:33

Beitrag von trustkill » 8. Aug 2007, 11:54

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.
Bild
openSuSE 10.3 | KDE | AMD Athlon64 X2 4200+ EE| MSI K9VGM-V | Nvidia Geforce 7100 GS 256MB | CompizFusion

Leviathan
Hacker
Hacker
Beiträge: 510
Registriert: 30. Aug 2006, 15:30
Wohnort: Nürnberg

Beitrag von Leviathan » 8. Aug 2007, 12:06

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
Hacker
Beiträge: 510
Registriert: 30. Aug 2006, 15:30
Wohnort: Nürnberg

Beitrag von Leviathan » 8. Aug 2007, 12:08

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

Benutzeravatar
robi
Moderator
Moderator
Beiträge: 3159
Registriert: 25. Aug 2004, 02:13

Beitrag von robi » 8. Aug 2007, 12:46

trustkill hat geschrieben: 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 # es wird eine Funktion mit Namen ":" definiert ; dabei wird boshafter Weise gleich auch noch die eingebaute Shellfunktion ":" (Leerfunktion) überschreiben.

Funktionbeschreibung

Code: Alles auswählen

{ :|: }
# 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

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast