Herramientas de usuario

Herramientas del sitio


notas:seguridad

Diferencias

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

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
Próxima revisiónAmbos lados, revisión siguiente
notas:seguridad [2014/05/21 14:20] – [Seguridad] cayunotas:seguridad [2014/06/03 14:05] – [Seguridad] cayu
Línea 18: Línea 18:
  
 {{:notas:seguridad:pty.c.gz|}} CVE-2014-0196 DOS PoC [Written May 5th, 2014] {{:notas:seguridad:pty.c.gz|}} CVE-2014-0196 DOS PoC [Written May 5th, 2014]
-===== Understanding Bash fork() bomb ~ :(){ :|:& };: ===== 
  
-**Q.** Can you explain following bash code or bash fork() bomb? +=== Bombas lógicas ===
-:(){ :|:& };: +
- +
-**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]]
  
 ===== How to: Prevent a fork bomb by limiting user process ===== ===== How to: Prevent a fork bomb by limiting user process =====