Explicación rápida de la bomba fork. ¿Que hace la bomba fork en GNU/Linux?
:(){ :|:& };:
Es un tipo de ataque de denegación de servicios o DoS, que básicamente lo que hace es saturar el espacio disponible en el ordenador, aunque es posible usar bombas fork en cualquier lenguaje, solo me centraré en bash, por su forma que parece tan extraña
Aunque se ve muy complejo, es sencillo es una simple función que se llama a ella misma… Ahora la bomba Fork legible para humanos XD
:(){ :|:& };:
Aquí una función simple…
funcion(){ var1= $1 echo "Funcion" }
Para cualquier persona que sepa leer y un poco de programación
bomba(){ bomba | bomba & };bomba
Como se puede ver es realmente simple, se crea una función que se llama a ella misma, que crea un ciclo que no se detiene hasta lograr su objetivo saturar el ordenador.
En resumen…
:(){
Es la función llamada :
:|:
Se llama la función a ella misma, por medio de recursividad y tuberías. La peor parte es cuando se llama por segunda vez…
&
Hace que se ejecute la función de fondo, así el proceso no puede ser terminado, hasta acabar con todos los recursos
};:
Termina la función y se vuelve a llamar de nuevo…
Por si alguien tenia curiosidad al ver ese seductor código que para un newbe hasta podría ser extraño, pero no es nada que un poco de lógica no resuelva
16 comentarios, deja el tuyo
Alfred.
De hecho es interesante, aunque hoy día si te lanzan una bomba fork no pasaría nada porque hay niveles de seguridad que seteas donde limitas la cantidad de procesos que puede generar cualquier programa, solo distros como Arch, Gentoo, etc no traen estas restricciones por defecto y debes crearlas tu.
Es chistoso porque Tete y yo pasamos un día horas cagándonos de la risa con este tema, mucha gente que instala Arch solo lo instala y le pone el entorno, pero e olvidan de muchas otras cosas importantísimas que son necesarias para configurar (o al menos eran necesarias, la verdad es que no tengo idea de como sea ahora) y por eso se decía que era «fácil y rápido de instalar».
En fin, creo que hubiese sido un poco mas simple explicarlo con la bomba en python, que es aun mas explícita.
De hecho, esos ajustes de ejecución de procesos suelen ser bastante importantes a la hora de instalar una distro GNU/Linux con un minimalismo como el que tiene Arch y/o Gentoo.
Y por cierto, las veces que me pongo a usar Arch son para probar las versiones de programas e interfaces que recién han salido del horno. En fin, es bastante interesante esa bomba de fork.
Si, es mucho mas sencillo de entender en python los dejo aca por si a alguien les intereza:
import os
while True:
—-os.fork()
Y con recursividad:
import os
def bomba():
—-os.fork()
—-bomba()
bomba()
Y nano cabe desctacar que en debian 7 Stable, tampoco hay seguridad para esto, por lo menos no con python, te cuelga el sistema instantaneo.
Saludos.
pues yo he ejecutado una bomba fork en ubuntu y se calo el ordenador instantaneamente
Para desactivar la bomba, se limita los procesos en la terminal con: ulimit -u 50 y bomba desactivada :p.
En todo caso hay que mencionar que los O.S. actuales tienen limitados cuantos procesos pueden tener activos, es cosa de lanzar una bomba fork en un Fedora y no pasara nadita.
Sin duda, pero por ejemplo solaris y windows (que es donde lo he probado) no vienen protegidos.
COOL! 🙂
Haga lo mismo; pero esta vez haga que sea util, es decir que ejecute en windows y haber que sucede. No en GNU/Linux.
Muy curioso, la proximidad al tema de sabotaje informático, no se si ese podría ser el caso del reproductor Gnash: en el sitio Vimeo corre vídeos de forma impecable, pero en Youtube apenas y alcanza resolución de 240 pixels; En Dailymotions ni reproduce, a mi forma de ver algo incomprensible para mí, dado que no soy programador.
De no cambiar eso, creo que, no es mala idea que los simpatizantes del software libre publiquemos nuestros vídeos en donde si se difunda para todos, sin discriminación.
Gnash debería fijarse en ello, pero como su desarrollo era lento, Mozilla optó por hacer su propio reproductor de Flash a punta de Javascript llamado Shumway. Espero que Shumway salga pronto para poder reemplazar el Flash Player que tengo en GNU/Linux.
y ya que estamos no viene demas decir como protegerse, una forma muy basica (y sobre todo para los noobs Archers) es limitar la cantidad de procesos, para esto nos vamos a /etc/security/limits.conf y agregamos la siguiente linea:
* hard nproc 1000
con esto, limitamos los procesos a esa cantidad, yo por ejemplo lo tengo puesto en esa cantidad (aunque todo el SO a full corre con mucho menos, unos 200-300 procesos) y al aplicarle la bomba fork, mi SO sigue totalmente funcional e inmune, esta claro que si limitamos la cantidad de procesos a algo muy bajo podria traer alguna que otra consecuencia ya que algun programa querria crear procesos y el SO no lo dejaria, en mi caso, limitado a 1000 procesos me va perfecto
Yo lo he puesto a
* soft nproc 500
* hard nproc 1000
Aunque la wiki de arch recomienda el soft a 100 y hard a 200.
Aunque no deberia haber problema, me da miedo lanzarme una bomba para probar…xD
La forma más sencilla de hacer escudarse es limitando el valor de ulimits de forma que se pueda matar el proceso de la bomba.
Interesante articulo, para prevenirlo en Slackware utilizamos ulimit en el archivo /etc/profile
El problema de restringir ulimit es que puede limitarte el uso del sistema dependiendo qué hagas.