Herramientas de usuario

Herramientas del sitio


notas:seguridad:understanding_bash_fork_bomb

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

notas:seguridad:understanding_bash_fork_bomb [2014/06/03 14:05] – creado cayunotas:seguridad:understanding_bash_fork_bomb [Fecha desconocida] (actual) – borrado - editor externo (Fecha desconocida) 127.0.0.1
Línea 1: Línea 1:
-===== Understanding Bash fork() bomb ~ :(){ :|:& };: ===== 
- 
-**Q.** Can you explain following bash code or bash fork() bomb? 
-:(){ :|:& };: 
- 
-**A.** This is a bash function. It gets called recursively (recursive function). This is most horrible code for any Unix / Linux box. It is often used by sys admin to test user processes limitations (Linux process limits can be configured via /etc/security/limits.conf and PAM). 
- 
-Once a successful fork bomb has been activated in a system it may not be possible to resume normal operation without rebooting, as the only solution to a fork bomb is to destroy all instances of it. 
-[Warning examples may crash your computer] WARNING! These examples may crash your computer if executed. 
-Understanding :(){ :|:& };: fork() bomb code 
- 
-:() - It is a function name. It accepts no arguments at all. Generally, bash function is defined as follows: 
- 
-<code bash> 
-foo(){ 
- arg1=$1 
- echo '' 
- #do_something on $arg argument 
-} 
-</code> 
- 
-fork() bomb is defined as follows: 
- 
-<code bash> 
-:(){ 
- :|:& 
-};: 
-</code> 
-** 
-:|:** - Next it call itself using programming technique called recursion and pipes the output to another call of the function ':'. The worst part is function get called two times to bomb your system. 
- 
-**&** - Puts the function call in the background so child cannot die at all and start eating system resources. 
- 
-**;** - Terminate the function definition 
- 
-**:** - Call (run) the function aka set the fork() bomb. 
- 
-Here is more human readable code: 
- 
-<code bash> 
-bomb() { 
- bomb | bomb & 
-}; bomb 
-</code> 
- 
-Properly configured Linux / UNIX box should not go down when fork() bomb sets off. 
- 
-==== Extra ==== 
- 
-Perl exmaple: 
- 
-<code perl> 
-perl -e "fork while fork" & 
-</code> 
- 
-Python example: 
- 
-<code python> 
-import os 
-  while(1): 
-      os.fork() 
-</code> 
- 
-Windows XP / Vista bat file example: 
- 
-<code> 
-:bomb 
-start %0 
-goto bomb 
-</code> 
- 
-UNIX style for Windows: 
- 
-<code> 
-%0|%0 
-</code> 
- 
-C program example: 
- 
-<code c> 
-#include 
- int main() {   while(1)      fork();  
-</code> 
- 
-Plz note that the fork bomb is a form of denial of service, so don’t run on production or unauthorized system. 
- 
- 
-==== Fuente ==== 
- 
- 
-http://www.cyberciti.biz/faq/understanding-bash-fork-bomb/#comment-37097 
- 
- 
  
notas/seguridad/understanding_bash_fork_bomb.1401804313.txt.gz · Última modificación: 2014/06/03 14:05 por cayu