Bomba Fork: Ataque DoS para Linux

May 6, 2007

Leo en Barrapunto, sobre las Bombas Fork, que son en esencia ataques que saturan los recursos del CPU a base de ejecutar sub-procesos una y otra vez sin fin. En esencia un bucle infinito que consume recursos.

En realidad, este ataque puede realizarse bajo Windows, Linux, Unix y/o cualquier otro sistema que soporte la creación de multi-procesos. En Linux, existe un sencillo script en bash para realizar una Bomba Fork (El comando no tiene espacios entre : y |).

(No me responsabilizo por lo que le pase al que ejecute la secuencia, solo está aquí por propósitos informativos)

: () { : | : & } ; :

La he probado en un Debian Etch y el sistema se ha colgado. En Windows, podemos disponer del mismo ataque que simplemente llenará de ventanas de línea de comando al sistema hasta colgarlo.

(No me responsabilizo por lo que le pase al que ejecute la secuencia, solo está aquí por propósitos informativos)

:s
start %0
goto s

Y aquí tienen una versión multiplataforma en C:

#include <unistd .h>

int main()
{
while(1)
fork();
}

(No me responsabilizo por lo que le pase al que compile y ejecute el programa, solo está aquí por propósitos informativos)

¿Cómo funcionan estos ataques?, como decía Edward Elric (Full Metal Alchemist):

No hay eventos inexplicables, todo es resultado de acciones científicamente mesurables…

Un ataque de Fork Bomb, básicamente crea un proceso y este a su vez crea un sub-proceso. Esto se repite dentro de un bucle infinito, lo que lleva a que la computadora se congele por saturación de recursos.

¿Existe Solución a esto? En realidad no la hay, ya que esto es culpa de un hábito malo de programación. Sin embargo hay dos posibles alternativas:

  • Limitar los recursos por usuario: Por defecto las distribuciones Linux les dan a los usuarios recursos ilimitados y si se quiere evitar ser víctima de una Bomba Fork, podemos usar el comando ulimits para corregir este problema, asignando solo una parte de los recursos.
  • Usar un módulo del Kernel: Existe un programador llamado Rohit Singh que ha creado un módulo para el Kernel que detecta y elimina estos comportamientos anómalos. Puede descargarse de aquí, aunque actualmente no es estable aún, pero puede servir para los que les gusta probar.

Espero que nadie que lea esta información la use para actuar como Script Kiddie, es decir, una persona que ejecuta programas para explotar vulnerabilidades y se hace llamar Hacker o Cracker sin tener un mínimo conocimiento de cómo son estas vulnerabilidades. ¡Eso es para gente ignorante!

Y me olvidaba decir que este ataque fue descubierto en 1980 por un programador de UNIX, por lo que es viejísimo. A la vez puede servir como enseñanza a los que estudien Fundamentos de Programación.

3 Comments »

The URI to TrackBack this entry is: http://brunoprog64.blogsome.com/2007/05/06/bomba-fork-ataque-dos-para-linux/trackback/

  1. para saturar una MAC en cual de los presentes o mas bien cual de ellos deberia escribir y enq ue.

    Comment by Gf — May 26, 2008 @ 5:45 pm

  2. En realidad, este ataque puede realizarse bajo Windows, Linux, Unix

    Comment by zigzag — July 13, 2008 @ 1:04 pm

  3. bajo unix esta limitado el numero de procesos.

    Comment by zigzag — July 13, 2008 @ 1:06 pm

RSS feed for comments on this post.

Leave a comment

Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>



Medida AntiSpam. Por favor tipea el texto a tu derecha. Lamento tener que hacer eso, pero quiero tener un blog limpio de Spam.