notas:seguridad:understanding_bash_fork_bomb
Diferencias
Muestra las diferencias entre dos versiones de la página.
| notas:seguridad:understanding_bash_fork_bomb [2014/06/03 14:05] – creado cayu | notas: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 / | ||
| - | |||
| - | 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(){ | ||
| - | | ||
| - | echo '' | ||
| - | # | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | fork() bomb is defined as follows: | ||
| - | |||
| - | <code bash> | ||
| - | :(){ | ||
| - | : | ||
| - | };: | ||
| - | </ | ||
| - | ** | ||
| - | :|:** - Next it call itself using programming technique called recursion and pipes the output to another call of the function ':' | ||
| - | |||
| - | **&** - 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 | ||
| - | </ | ||
| - | |||
| - | Properly configured Linux / UNIX box should not go down when fork() bomb sets off. | ||
| - | |||
| - | ==== Extra ==== | ||
| - | |||
| - | Perl exmaple: | ||
| - | |||
| - | <code perl> | ||
| - | perl -e "fork while fork" & | ||
| - | </ | ||
| - | |||
| - | Python example: | ||
| - | |||
| - | <code python> | ||
| - | import os | ||
| - | while(1): | ||
| - | os.fork() | ||
| - | </ | ||
| - | |||
| - | Windows XP / Vista bat file example: | ||
| - | |||
| - | < | ||
| - | :bomb | ||
| - | start %0 | ||
| - | goto bomb | ||
| - | </ | ||
| - | |||
| - | UNIX style for Windows: | ||
| - | |||
| - | < | ||
| - | %0|%0 | ||
| - | </ | ||
| - | |||
| - | C program example: | ||
| - | |||
| - | <code c> | ||
| - | #include | ||
| - | int main() { | ||
| - | </ | ||
| - | |||
| - | Plz note that the fork bomb is a form of denial of service, so don’t run on production or unauthorized system. | ||
| - | |||
| - | |||
| - | ==== Fuente ==== | ||
| - | |||
| - | |||
| - | http:// | ||
| - | |||
| - | |||
notas/seguridad/understanding_bash_fork_bomb.1401804313.txt.gz · Última modificación: 2014/06/03 14:05 por cayu
