Kako funkcioniše shell fork bomb (!)

Kako funkcioniše shell fork bomb (!)

offline
  • Pridružio: 20 Feb 2005
  • Poruke: 4505
  • Gde živiš: planeta Zemlja

Naglašavam da sledeću komandu ne treba da kucate zato što će dovesti do rušenja sistema (moraćete da ugasite računar ili da ga restartujete)!

Elem, čuvena komanda glasi ovako:
:(){ :|:& };:

Objašnjenje:
:()
Ovo je ime funkcije (koristimo prilikom pisanja skripi za školjku). Primer funkcije sa "normalnijim" imenom:
rip_mp2avi ()

Fork bomb (gore naveden) može da se napiše i ovako:
Citat:bomba (){
bomba | bomba &
}; bomba

U čemu je štos? Objasnićemo:
1. Funkcija je bomba () (ovo je "glavna" funkcija);
2. Glavna funkcija bomba | bomba poziva sebe i svoj izlaz pajpuje opet u sebe;
3. & koristimo da stavimo proces u pozadinu. Ako pogledamo tačku 2 detaljnije, jasno nam je zašto je to loše. Uporno ćemo da pozivamo glavnu funkciju u samu sebe u pozadini (ako sam ja dobro razumeo, ovo se ponavlja beskonačno mnogo puta zbog tehnike iz tačke 2);
4. ; završava definisanje funcije;
5. bomba koristimo da pokrenemo funkciju (eng. launch (možda će nekome biti jasnije));

Ovo sam našao na sledećem sajtu: http://www.cyberciti.biz/faq/understanding-bash-fork-bomb/
Interesovalo me je kako radi pa sam zato i potražio. Možda neke delove nisam najbolje razumeo pa vi ispravite ako sam negde pogrešio.

! Korisno: Na ovoj adresi imate objašnjenje kako da ograničite broj korisničkih procesa po korisničkom nalogu.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 30 Dec 2007
  • Poruke: 4759
  • Gde živiš: Niš

ali novi kerneli imaju
"proces oom killer" koji automatski "ubije" procese kad nestane memorije Embarassed
http://linux-mm.org/OOM_Killer
valjda se on sam uključi u toj situaciji ,ili ne ?



offline
  • Pridružio: 20 Feb 2005
  • Poruke: 4505
  • Gde živiš: planeta Zemlja

FarscapeFan ::ali novi kerneli imaju
"proces oom killer" koji automatski "ubije" procese kad nestane memorije Embarassed
http://linux-mm.org/OOM_Killer
valjda se on sam uključi u toj situaciji ,ili ne ?


Istražiću ovo (hvala). Nisam ni znao da imamo tako nešto u kernelu Confused

offline
  • soxxx 
  • Prijatelj foruma
  • Pridružio: 25 Maj 2005
  • Poruke: 1482
  • Gde živiš: Gracanica, Kosovo

Na sledecem linku ima vise objasnjenja, kako "ubiti" fork, kao i zastita od fork bombinga:

http://en.wikipedia.org/wiki/Fork_bomb

Na Linuxu postoji GRSECURITY patch koji bi (izmedju ostalog) trebalo da obezbedi zastitu od forkovanja, evo malog citata:

...

Fork-bombing protection
CONFIG_GRKERNSEC_FORKBOMB
  If you say Y here, you will be able to configure a group to add to users
  on your system that you want to be unable to fork-bomb the system.
  You will be able to specify a maximum process limit for the user and
  set a rate limit for all forks under their uid. (Fork-bombing is a
  tactic used by attackers that can be enacted in two ways, (1) loading
  up thousands of processes until the system can't take any more (this
  method can be stopped outside of the kernel with PAM, however we place
  protection for it in the kernel to be more complete and reduce overhead),
  and (2), by forking processes at a rapid rate, and then killing them
  off, which cannot be protected against in the same way at tactic 1)
  The rate limit is specified in forks allowed per second.  Set this
  limit low enough to stop tactic 2, but high enough to allow for
  normal operation.  The protection will kill the offending process.
  If the sysctl option is enabled, a sysctl option with name
  "fork_bomb_prot" is created.

Max processes for fork-bomb protection
CONFIG_GRKERNSEC_FORKBOMB_MAX
  Here you can configure the maximum number of processes users in the
  fork-bomb protected group can run.  I would not recommend setting a
  value lower than 8, since some programs like man(1) spawn up to 8
  processes to run.  The default value should be fine for most purposes.
  If the sysctl option is enabled, a sysctl option with name
  "fork_bomb_max" is created.

Forks allowed per second
CONFIG_GRKERNSEC_FORKBOMB_SEC
  Here you can specify the maximum number of forks allowed per second.
  You don't want to set this value too low, or else you'll hinder
  normal operation of your system.  The default value should be fine for
  most users.  If the sysctl option is enabled, a sysctl option with name
  "fork_bomb_sec" is created.

Group for fork-bomb protection
CONFIG_GRKERNSEC_FORKBOMB_GID

...

offline
  • Pridružio: 26 Avg 2005
  • Poruke: 384
  • Gde živiš: Beograd

Samo da javim da ovo ne radi na npr RHEL 6. Sada sam probao i prost ctrl + c resava problem.

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12488
  • Gde živiš: Južni pol

Napisano: 21 Apr 2011 16:39

Stator ::Samo da javim da ovo ne radi na npr RHEL 6. Sada sam probao i prost ctrl + c resava problem.

Ovo je navlakuša. Smile Ne možeš da pritisneš Ctrl + C ako se procesi forkuju u pozadini.

Priznajem da sam naseo. Ziveli

@all: ne isprobavajte ovo "kod kuće". Bićete primorani da silom restartujete sistem (što može dovesti do oštećenja sistema datoteka).

Dopuna: 21 Apr 2011 17:07

Ako bi i postojao neki razlog zašto fork bomb ne radi na RHEL-u to bi najverovatnije bio SELINUX. Da bih utvrdio da li si u pravu ili ne, u naredna dva dana ću instalirati RHEL trial na test mašinu. Ukoliko si u pravu, istražiću kako se RHEL štiti od ovoga.

offline
  • Pridružio: 26 Avg 2005
  • Poruke: 384
  • Gde živiš: Beograd

Nije navlakusa, ovo je test system:

Fedora 14
VMware
RHEL 6.0

Pre pokretanja sam imao oko 130 procesa posle pokretanja imam 1024(default limit po useru) u tom trenutku mi puca watch -d "ps aux | wc -l" komanda.Ali ctrl + c resava stvar. Napominjem da sam komandu pokrenuo kao user. Posle (nekoliko) ctrl + c broj procesa se vraca na normalu

Pritom dobijam gresku bash: fork: Resource temporarily unavailable
Ova greska se javlja kada system ne moze da napravi novi proces zbog manjka memorije.
Rezultat je isti sa i bez selinux-a.

Medjutim ako ga pokrenes kao root sve ode dodjavola. To sam samo zaboravio da napomenem Smile

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12488
  • Gde živiš: Južni pol

Napisano: 22 Apr 2011 12:55

Ok, ok... Verujem. Smile

Samo... I ja sam... khm... ...isprobavao. Ali nisam baš najbolje prošao sa time. Laughing

Dopuna: 16 Avg 2016 11:44

Slikovit prikaz fork bombe. Very Happy



Ne znam izvor. Okačen na više sajtova u nekoliko iteracija ali nijedan ne deluje kao originalni izvor.

Ko je trenutno na forumu
 

Ukupno su 814 korisnika na forumu :: 5 registrovanih, 1 sakriven i 808 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Bokiboks, goxin, mige, MilosKop, Shilok